素数分解

时间:2019-11-17 16:03:31

标签: javascript

我正在尝试编写一个函数,以正整数和素数作为输入,如果给定正整数的素数因子小于或等于,则返回true数。

给定质数应为给定正整数的质数。

hasLessPrimeFactor(20,5)应该返回true,因为一个数的素数:20 = 2 X 2 X 5

 Up to now I have completed 3 test cases out of 4 test cases
  1. 返回类型应为字符串。
  2. hasLessPrimeFactor(20,5)应该返回true
  3. hasLessPrimeFactor(20,7)应该返回false
  4. 答案对于任何给定的输入均应有效。(上述未通过测试的案例)

到目前为止我所做的:

function hasLessPrimeFactor(num,primenum){
    let arr = [];

     if(num < 2 || primenum < 2 || isNaN(num) ||isNaN(primenum)){
    return 0;  
  }

    for (i = 2; i <= num; i++) {
        while ((num % i) === 0) {
            arr.push(i);
            num /= i;
        }
    }

  for (var k = 0; k < arr.length; k++) {
  if(arr[k] == primenum && arr.length <= primenum)
    return true;
    }
    return false;
}

hasLessPrimeFactor(20,5);

欢迎任何建议。

1 个答案:

答案 0 :(得分:0)

鉴于评论中提出的要求primenum变量应为num的因数,您可以在开始时进行验证。不过,这似乎是一个奇怪的要求-并未真正暗示该方法的名称,因此我会仔细检查以确保您没有引入任何偶然的假设。就是说,这将测试确保primenum参数是num的因数。

if (num % primenum) return false;

此外,您的第一个for循环无需从2..num进行迭代;从2..primenum进行迭代就足够了。