|
9 | 9 | * First few composite numbers are 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, .........
|
10 | 10 | * Every integer greater than one is either a prime number or a composite number.
|
11 | 11 | * The number one is a unit – it is neither prime nor composite.
|
| 12 | + * Reference: https://www.geeksforgeeks.org/composite-number/ |
12 | 13 | */
|
13 | 14 |
|
14 | 15 | function isCompositeNumber (number) {
|
15 | | - let i = 1 |
16 | | - let count = 0 |
17 | | - while (number >= i) { |
18 | | - if (number % i === 0) { |
19 | | - count++ |
20 | | - } |
21 | | - i++ |
22 | | - } |
23 | | - if (count > 2) { |
24 | | - return true |
25 | | - } else { |
26 | | - return false |
| 16 | + // Condition that can immediate skip: |
| 17 | + // Corner cases |
| 18 | + if (number <= 1) return false |
| 19 | + if (number <= 3) return false |
| 20 | + // middle five numbers in below loop |
| 21 | + if (number % 2 === 0 || number % 3 === 0) return true |
| 22 | + |
| 23 | + for (let i = 5; i * i <= number; i = i + 6) { |
| 24 | + if (number % i === 0 || number % (i + 2) === 0) { return true } |
27 | 25 | }
|
| 26 | + |
| 27 | + return false |
28 | 28 | }
|
29 | 29 |
|
30 | 30 | export { isCompositeNumber }
|
0 commit comments