mirror of
https://github.moeyy.xyz/https://github.com/trekhleb/javascript-algorithms.git
synced 2024-09-20 07:43:04 +08:00
Compare commits
2 Commits
fcf8cdbab8
...
f7d3e99ebc
Author | SHA1 | Date | |
---|---|---|---|
|
f7d3e99ebc | ||
|
e156b8afd5 |
@ -8,25 +8,19 @@ export default function trialDivision(number) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (number <= 1) {
|
|
||||||
// If number is less than one then it isn't prime by definition.
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (number <= 3) {
|
if (number <= 3) {
|
||||||
// All numbers from 2 to 3 are prime.
|
// If number is less than one then it isn't prime by definition. But all numbers from 2 to 3 are prime.
|
||||||
return true;
|
return number > 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the number is not divided by 2 then we may eliminate all further even dividers.
|
// If the number is not divided by 2 or 3 then we may eliminate all further even dividers.
|
||||||
if (number % 2 === 0) {
|
if (number % 2 === 0 || number % 3 === 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If there is no dividers up to square root of n then there is no higher dividers as well.
|
// If there is no dividers up to square root of divider then there is no higher dividers as well. To make the algorithm more efficient, we increment by 6 everytime, and make sure to check divider + 2 as well.
|
||||||
const dividerLimit = Math.sqrt(number);
|
for (let divider = 5; number >= (divider * divider); divider += 6) {
|
||||||
for (let divider = 3; divider <= dividerLimit; divider += 2) {
|
if (number % divider === 0 || number % (divider + 2) === 0) {
|
||||||
if (number % divider === 0) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user