I’m working on Problem 3 and for some reason my code (below) passes all the tests except that largestPrimeFactor (2) returns 2:
-
Passed:
largestPrimeFactor(2)
should return a number. -
Failed:
largestPrimeFactor(2)
should return 2. -
Passed:
largestPrimeFactor(3)
should return 3. -
Passed:
largestPrimeFactor(5)
should return 5. -
Passed:
largestPrimeFactor(7)
should return 7. -
Passed:
largestPrimeFactor(8)
should return 2. -
Passed:
largestPrimeFactor(13195)
should return 29. -
Passed:
largestPrimeFactor(600851475143)
should return 6857.
I’m not sure what I’m doing wrong and am not seeing what part of my program is making it such that all the other tests work but not this particular 2 case - I even specified that 2 was a prime number, which helped with the “largestPrimeFactor(8) should return 2” test but not this one. Does anyone see the flaw in my code? Thanks!
function largestPrimeFactor(number) {
const factors3 = factor(number);
let answer = 0;
let i = 0;
while (i < factors3.length) {
if (isPrime(factors3[i]) == true) {
answer = factors3[i]
}
i += 1;
}
return answer;
}
function factor(number) {
const factors = [];
for (let i = 1; i < Math.sqrt(number)+1; i++) {
if (number % i == 0) {
factors.push(i);
factors.push(number/i);
}
}
return factors
}
function isPrime(number) {
if (number == 2) {
return true
}
const factors2 = factor(number);
let size = factors2.length;
if (size == 2) {
return true;
}
else {
return false;
}
}
largestPrimeFactor(13195);