Skip to content

Instantly share code, notes, and snippets.

@ericorruption
Created April 5, 2016 18:24
Show Gist options
  • Save ericorruption/cf64a8dd50b94e73ac62015d665489ed to your computer and use it in GitHub Desktop.
Save ericorruption/cf64a8dd50b94e73ac62015d665489ed to your computer and use it in GitHub Desktop.
largest prime factor calculator (euler project challenges)
// The prime factors of 13195 are 5, 7, 13 and 29.
// What is the largest prime factor of the number 600851475143?
// 13195 / 5 = 2639
// 2639 / 7 = 377
// 377 / 13 = 29
// a prime number is a number that is divisible only by itself (and 1)
var target = 600851475143;
function findNextPrime(currentPrime) {
if (currentPrime === 2) {
currentPrime = 1;
}
var newPrime = currentPrime + 2,
primeFound = false;
while (!primeFound) {
var i;
for (i = 3; i <= newPrime; i = i + 2) {
if (newPrime % i === 0) {
if (i === newPrime) {
primeFound = true;
} else {
break;
}
}
}
if (!primeFound) {
newPrime = newPrime + 2; // primes are not even, ever, after 2;
}
}
return newPrime;
}
var largestPrimeNumber = 2,
current = target;
while (current !== largestPrimeNumber) {
var currentDivision = current % largestPrimeNumber;
if (currentDivision === 0) {
// ok
current = current / largestPrimeNumber;
} else {
largestPrimeNumber = findNextPrime(largestPrimeNumber);
}
// console.log('current division: ' + current);
// console.log('current prime: ' + largestPrimeNumber);
}
console.log('largest prime factor: ' + largestPrimeNumber);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment