我希望找到从1到N范围内的所有素数之和。当我调用值为3的sumPrimes函数时,该代码给出了一个无限循环。我调试了代码,发现它仅对数字3。对于大于2的任何其他数字,则不会这样做。
JavaScript:
function sumPrimes(num) {
var sum=0;
for (i = 2; i <= num; i++) {
if (checkPrime(i)) {
sum += i;
}
}
return sum;
}
function checkPrime(num) {
for (i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) {
return false;
}
}
return true;
}
因为您必须i
使用var
:进行声明,所以它将在函数中成为局部函数。
for (var i = 2; i <= num...
否则,这两个函数使用相同的全局变量。
如果您想避免此类错误,则应使用strict mode
。JavaScript使用严格
您只需"use strict";
要将.js文件放在顶部。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句