下面的代码似乎总是返回true,无论我插入什么值,我都看不出为什么。如果n = 8,那么arr2应该包含2,4和8的i的值? 有人可以解释一下吗?非常感谢你。在原始代码素数简单测试
var primetest = function(n){
var divisor = [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
for (var i = 0; i < divisor.length; i++) {
var arr2 = [];
if(n%divisor[i] == 0) {arr2.push(i);}
if(arr2.length > 1) {prime = false;}
else {prime = true;}
return prime;
};
};
您的返回语句位于循环中,因此整个函数在第一次迭代达到该语句时结束。 – CBroe
将for循环后的If(arr2.length> 1)检查放在 – dz15
之后...并且在每次循环迭代时重置arr2变量 - 将该var语句移到循环之外。 –