Javascript素数错误?

时间:2013-07-29 17:00:25

标签: javascript primes

有人可以帮我找到这段代码中的错误吗?我正在阅读我提出的内容,从逻辑上讲,我的每一步都对我有意义,但它并没有产生预期的结果。最后,我测试用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));

4 个答案:

答案 0 :(得分:1)

您将从forloop

内部返回该功能

所以它永远不会发表其他声明

<强> Check Fiddle

答案 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);