mirror of
https://github.com/trekhleb/javascript-algorithms.git
synced 2025-07-25 02:42:09 +08:00
Add primality tests.
This commit is contained in:
28
src/algorithms/math/primality-test/trialDivision.js
Normal file
28
src/algorithms/math/primality-test/trialDivision.js
Normal 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;
|
||||
}
|
Reference in New Issue
Block a user