【发布时间】:2015-11-26 03:24:12
【问题描述】:
我正在处理 Project Euler 问题 (#3) - 最大素因子。
我编写的代码似乎适用于较小的数字,但不适用于较大的数字(请参阅函数的第二次调用)。如果我尝试这样做,它会进入无限循环,我不知道为什么。我试过 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
【问题讨论】:
-
你很可能内存不足,因为这个数字太大了
标签: javascript for-loop infinite-loop