在JSBin上,这段代码每次运行时返回一个不同的数字,但它不作为Stack Snippet在这里:
function prime(num) {
var primes = [];
var i = 1;
while (primes.length <= num) {
if (isPrime(i)) {
primes.push(i);
}
i++;
}
function isPrime(i) {
for (var k = 2; k <= Math.sqrt(i); k++) {
if (i % k === 0) {
return false;
}
}
return true;
}
return primes.pop();
}
console.log(prime(10001));
Link to JSbin。如果在JSBin上重复运行它,控制台中会显示什么:
答案 0 :(得分:3)
如果查看chrome控制台,可以看到以下警告。这就是为什么循环在某个阶段随机断开的原因。
在第6行退出潜在的无限循环。禁用循环保护: 将“// noprotect”添加到您的代码中
如果您在代码顶部添加行// noprotect
并在JSBin中运行它,它会一直给出正确的答案。
// noprotect
function prime(num) {
var primes = [];
var i = 1;
while (primes.length <= num) {
if (isPrime(i)) {
primes.push(i);
}
i++;
}
.....