【发布时间】:2017-01-26 05:48:27
【问题描述】:
第一个函数确定一个数是否为素数。第二个函数应该创建一个包含所有质数直到最大值并包括最大值的数组,但由于某种原因它给了我一个无限循环。
function isPrime(num) {
for (i = 2; i < num; i++) {
if (num % i === 0) {
return false
}
}
if (num <= 1) {
return false;
}
return true;
}
function primes(max) {
var all = [];
for (i = 2; i <= max; i++) {
if (isPrime(i)) {
all.push(i);
}
}
}
primes(17);
【问题讨论】:
-
使用严格模式,你不会有这些问题,因为它会抱怨又快又响。
-
如果要获取素数列表,使用sieve of Eratosthenes,会更快。
-
有趣的事实,你的
i永远是2
标签: javascript loops for-loop infinite-loop prime-factoring