我写了这个程序(js),理想情况下会将10以下的所有质数放入一个名为“质数”的数组中……你们谁能认识到为什么它不起作用?(质数不会收到警报)。
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/
谢谢你的帮助!
发布于 2014-01-19 19:06:12
正如您从控制台日志中看到的:
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));发布于 2014-01-19 19:18:03
除了缺少=的语法错误之外,您还需要测试
if (factors.length === 2)而不是
if (factors.length > 2)发布于 2014-01-19 19:08:53
要使程序正常工作,请使用
var factors=[];代替var factors[]
代码中还有一个逻辑错误:)
https://stackoverflow.com/questions/21215890
复制相似问题