Skip to content

Instantly share code, notes, and snippets.

@keif
Created December 26, 2018 17:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save keif/8647af5e38829421c3d23d2587a5d8c9 to your computer and use it in GitHub Desktop.
Save keif/8647af5e38829421c3d23d2587a5d8c9 to your computer and use it in GitHub Desktop.
function isPrime(number) {
var index;
var limit = Math.ceil(Math.sqrt(number));
// since the main loop generates odd numbers only
// we can start testing primality dividing by 3
for (index = 3; index <= limit; index += 2) {
if (number % index === 0) {
return false;
}
}
return true;
}
function largestPrimeFactor(number) {
var factor = Math.ceil(Math.sqrt(number));
// start with an odd number
factor = (factor & 1) === 0 ? factor - 1 : factor;
while (!(number % factor === 0 && isPrime(factor))) {
factor -= 2; // odd numbers only
}
return factor;
}
largestPrimeFactor(600851475143);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment