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
你很可能内存不足,因为这个数字太大了 –