为什么我的素数计划不起作用?

时间:2014-01-19 11:04:14

标签: javascript jquery primes

我编写了这个程序(js),理想情况下将所有素数都放在一个名为“primes”的数组中......你们中的任何一个人都能认识到它为什么不起作用? (素数没有得到警报)。

var max = 10;
var count = 0;
var primes = [];
while(count <= max){
    var factors [];
    var count_ = 0;
    var pres = [];
    while(count_ <= count){
        pres.push(count_);
        count_++;
    }
    var count__ = 0;
    while(count__ <= pres.length){
        var res = count / pres[count__];
        if(res % 1 == 0){
            factors.push(pres[count__]);
        }

        count__++;
    }
    if(factors.length > 2){
        primes.push(count);
    }
    count++;   
}

alert(primes);

这是一个Js小提琴http://jsfiddle.net/ydH9C/

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

从控制台日志中可以看到:

Uncaught SyntaxError: Unexpected token [ 

这是因为你没有正确地将factors定义为数组,或者基本上没有=。所以改变:

var factors[];

为:

var factors = [];

Updated Demo


我认为@Gaby又名G. Petrioli指出你需要使用if (factors.length === 2)而不是if (factors.length > 2),实际上你不需要那么多变量和while循环,只需这样做:

function getPrimes(max) {
    var count = [], i, j, primes = [];
    for (i = 2; i <= max; ++i) {
        if (!count[i]) {
            primes.push(i);
            for (j = i < 1; j <= max; j += i) {
                count[j] = true;
            }
        }
    }
    return primes;
}

alert(getPrimes(10));

Updated Demo

答案 1 :(得分:1)

除了缺少=的语法错误,您需要测试

if (factors.length === 2)

而不是

if (factors.length > 2)

答案 2 :(得分:0)

使程序正常运行

 var factors=[];

而不是var factors[]

代码中也存在逻辑错误:)