我编写了这个程序(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/
感谢您的帮助!
答案 0 :(得分:2)
从控制台日志中可以看到:
Uncaught SyntaxError: Unexpected token [
这是因为你没有正确地将factors
定义为数组,或者基本上没有=
。所以改变:
var factors[];
为:
var factors = [];
我认为@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));
答案 1 :(得分:1)
除了缺少=
的语法错误,您需要测试
if (factors.length === 2)
而不是
if (factors.length > 2)
答案 2 :(得分:0)
使程序正常运行
var factors=[];
而不是var factors[]
代码中也存在逻辑错误:)