Hey guys, I need some help here with solving the third problem of Project Euler in which you have to get the largest prime factor of a number. I’m trying this problem via freeCodeCamp itself. I pass all tests of 2, 3, 5, 7, 8 and 13195, but the final test of 600851475143 gives the following warnings:
Potential infinite loop detected on line 6. Tests may fail if this is not changed.
Potential infinite loop detected on line 15. Tests may fail if this is not changed.
Potential infinite loop detected on line 12. Tests may fail if this is not changed.
and the horribly wrong answer of 104441.
What could I have done wrong, since I don’t see any outright problems? Am I missing something here?
const eratoSieve = (n) => {
let primes = [2, 3, 5, 7];
if (n > 7)
{
primes = [];
for (let i = 2; i < Math.sqrt(n); i++)
{
primes.push(i);
}
}
for (let j = 0; j < primes.length; j++)
{
let currentMultiple = primes[j];
for (let k = j + 1; k < primes.length; k++)
{
if (primes[k] % currentMultiple === 0)
{
primes[k] = false;
}
}
}
primes = primes.filter(elem => elem != false);
return primes;
};
function largestPrimeFactor(number) {
let primeNums = eratoSieve(number);
console.log(primeNums);
let biggestPrime = 0;
primeNums.forEach(elem => {
(number % elem === 0) ? biggestPrime = elem : 0;
});
return biggestPrime;
}
console.log(largestPrimeFactor(600851475143));
Thanks in advance for the help!