我试图写一个函数,以一个正整数和一个素数作为输入,如果给定的正整数的素数因子小于或等于给定素数的,则返回true。
给定素数应该是给定正整数的素数。
hasLessPrimeFactor( 20 ,5)应该返回true,因为一个数的素数因子:20=2X2X5
Up to now I have completed 3 test cases out of 4 test cases返回类型应该是string.
我到目前为止所做的事:
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);任何建议都是欢迎的。
发布于 2019-11-17 17:43:41
考虑到从您的注释中收集到的需求,即primenum变量应该是num的一个因素,您可以在开始时验证这一点。这似乎是一个奇怪的要求,尽管--并不是真正隐含在方法的名称中,所以我会仔细观察,以确保你没有引入任何偶然的假设。也就是说,这将进行测试以确保primenum参数是num的一个因素。
if (num % primenum) return false;此外,您的第一个for循环不需要从2..num迭代;从2..primenum迭代就足够了。
https://stackoverflow.com/questions/58902399
复制相似问题