我正在尝试用JavaScript编写一个程序,它生成100个随机数并检查每个程序的素数。程序就是这样做的,除了某些原因它不会停在100并且只是无限循环。我确定我犯了一些简单的新手错误,但由于某种原因我无法看到它。有什么建议吗?
我的代码:
function isPrime(n) {
if (n < 2 || n % 1)
return false;
var r = Math.sqrt(n);
for (i = 2; i <= r; i++)
if (n % i === 0)
return false;
return true;
}
for (i = 0; i < 100; i++) {
var temp = Math.floor((Math.random() * 100) + 1);
if (isPrime(temp))
console.log(temp + " is a prime number!");
else
console.log(temp + " is not a prime number.");
}
谢谢!
答案 0 :(得分:4)
您需要在for循环中声明i
变量:
(var i = 0; i < 100; i++) ...
否则它在全局范围内定义,并在for-loop和isPrime
函数之间共享。
答案 1 :(得分:1)
madox2是正确的,你应该在for循环中声明i
,但我认为循环本身是无限的原因是因为只在循环中执行i=0
,然后{{1}在循环调用的函数中,您每次迭代都重置for (i = 2; i <= r; i++)
您应该更改代码以分别在两个循环的范围内声明i
,如下所示:
i