有人可以帮我找到这段代码中的错误吗?我正在阅读我提出的内容,从逻辑上讲,我的每一步都对我有意义,但它并没有产生预期的结果。最后,我测试用6调用函数。
function is_prime(num) {
if (isNaN(num)) return false;
var numFactors = 0;
for (i=1; i<=num; i++) {
if (num % i === 0) {
numFactors += 1;
}
return numFactors;
}
if (numFactors === 2) {
return true;
}
else {
return false;
}
}
console.log(is_prime(6));
答案 0 :(得分:1)
答案 1 :(得分:0)
我相信您遇到的问题是您可能过早地退回numFactors
:
for (i=1; i<=num; i++) {
if (num % i === 0) {
numFactors += 1;
}
return numFactors;
}
在这里,您将在第一个循环结束时返回numFactors,因此它实际上从未完成整个测试。
答案 2 :(得分:0)
计算因素不是正确的方法 -
使用此 -
function is_prime(num) {
if (isNaN(num)) return false;
var k = Math.sqrt(num);
for (i=2; i<=k; i++) {
if(num%i===0)return false;
}
return false;
}
console.log(is_prime(6));
答案 3 :(得分:0)
当您逐步通过从1到num的所有数字进行个性化时,您可以选择它们作为因素并从功能中获得更多:
function fact(num) {
if (isNaN(num)) return false;
var Factors=[];
for (i=1; i<=num; i++) {
if (num % i == 0) Factors.push(i)
}
return Factors
}
console.log('factors: '+fact(27));
console.log('is prime: '+fact(27).length===2);