javascript - 为什么我的素数程序不起作用?

标签 javascript jquery primes

我写了这个程序(js),理想情况下会将 10 以下的所有素数放入一个名为“primes”的数组中......你们中的任何人都知道为什么它不起作用吗? (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 Fiddle http://jsfiddle.net/ydH9C/

感谢您的帮助!

最佳答案

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

Uncaught SyntaxError: Unexpected token [ 

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

var factors[];

至:

var factors = [];

Updated Demo

<小时/>

我认为 @Gaby aka 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

关于javascript - 为什么我的素数程序不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21215890/

相关文章:

javascript - 在 Angular JS 中按键时提交表单

c - 有些数字比其他数字需要更长的时间来分解

python - 埃拉托色尼筛 - 寻找素数 Python

javascript - 用于禁用按钮的两个逻辑运算符

javascript - 未捕获的语法错误 : Unexpected token : & invalid label errors

Javascript访问div

javascript - 谷歌地图 - 未捕获的类型错误 : Cannot set property 'position' of undefined

仅使用奇数除数计算素数速度较慢

javascript - 我的 html5 应用程序无法显示模型

javascript - 有没有办法将模型值动态绑定(bind)到 extJS 4.2 中的表单?