我正在尝试编写一个函数,以正整数和素数作为输入,如果给定正整数的素数因子小于或等于,则返回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
到目前为止我所做的:
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);
欢迎任何建议。
答案 0 :(得分:0)
鉴于评论中提出的要求primenum
变量应为num
的因数,您可以在开始时进行验证。不过,这似乎是一个奇怪的要求-并未真正暗示该方法的名称,因此我会仔细检查以确保您没有引入任何偶然的假设。就是说,这将测试确保primenum
参数是num
的因数。
if (num % primenum) return false;
此外,您的第一个for循环无需从2..num
进行迭代;从2..primenum
进行迭代就足够了。