我写了这个程序(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 = [];
<小时/>
我认为 @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));
关于javascript - 为什么我的素数程序不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21215890/