我试图用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.");
}
谢谢!
madox2是正确的,应该i
在for循环中声明,但是我认为循环本身是无限的原因是因为仅i=0
在循环中执行,然后for (i = 2; i <= r; i++)
在循环调用函数中,您将重置i
每次迭代
您应该更改代码以分别i
在两个循环的范围内进行声明,如下所示:
function isPrime(n) {
if (n < 2 || n % 1)
return false;
var r = Math.sqrt(n);
for (var i = 2; i <= r; i++)
if (n % i === 0)
return false;
return true;
}
for (var 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.");
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句