2
我正在處理項目歐拉問題(#3) - 最大的主要因素。JavaScript - 大型索引值導致無限循環 - 不確定爲什麼?
我寫的代碼似乎適用於較小的數字,但不適用於較大的數字(請參閱第二次函數調用)。如果我嘗試這樣做,它會陷入無限循環,我無法弄清楚原因。我試過JSBin測試,它做同樣的事情('潛在的無限循環'),所以我不知道如何調試這個問題。
希望對此有所幫助。
這裏是我的代碼:
//Prime Checker
var isPrime = function (num) {
for(var i = 2; i < num; i++) {
if(num % i === 0) {
return false;
}
}
return true;
}; //end function
//Largest Prime Factor
var primeFactor = function (num) {
var result = 0;
var temp = 0;
var primeArr = [];
for (var i = 2; i <= num; i++) {
if (num % i === 0) {
temp = i;
if (isPrime(temp)) {
primeArr.push(temp);
}
}
}
console.log("primeArr: " + primeArr);
//sort
primeArr.sort(function(a,b) {
return b - a;
});
result = parseInt(primeArr[0]);
console.log("result: " + result);
return result;
}; //end function
primeFactor(13195); //WORKS FINE
primeFactor(600851475143); //CAUSES INFINITE LOOP
你很可能內存不足,因爲這個數字太大了 –