下面的代碼似乎總是返回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語句移到循環之外。 –