Add primality tests.

This commit is contained in:
Oleksii Trekhleb
2018-04-16 22:19:06 +03:00
parent 5699738b9b
commit 54f6aadec4
4 changed files with 1 additions and 1 deletions

View File

@ -0,0 +1,28 @@
/**
* @param {number} number
* @return {boolean}
*/
export default function trialDivision(number) {
if (number <= 0) {
// If number is less then one then it isn't prime by definition.
return false;
} else if (number <= 3) {
// All numbers from 1 to 3 are prime.
return true;
}
// If the number is not divided by 2 then we may eliminate all further even dividers.
if (number % 2 === 0) {
return false;
}
// If there is no dividers up to square root of n then there is no higher dividers as well.
const dividerLimit = Math.sqrt(number);
for (let divider = 3; divider <= dividerLimit; divider += 2) {
if (number % divider === 0) {
return false;
}
}
return true;
}