Prime Number Check in JavaScript

Trial divide up to sqrt(n). 1 is not prime. 2 is. 9 is not.

IntermediateLoop ProgramsExample 6 of 6
prime-number-check.js
1// Prime number: divisible only by 1 and itself
2// Examples: 2, 3, 5, 7, 11, 13, 17, 19
3
4// Method 1: Basic check
5function isPrime(n) {
6 if (n < 2) return false;
7 if (n === 2) return true;
8 if (n % 2 === 0) return false;
9
10 for (let i = 3; i < n; i += 2) {
11 if (n % i === 0) return false;
12 }
13 return true;
14}
15
16console.log("2:", isPrime(2));
17console.log("4:", isPrime(4));
18console.log("17:", isPrime(17));
19console.log("20:", isPrime(20));
20
21// Method 2: Optimized (check up to sqrt(n))
22function isPrimeOptimized(n) {
23 if (n < 2) return false;
24 if (n === 2) return true;
25 if (n % 2 === 0) return false;
26
27 let sqrt = Math.sqrt(n);
28 for (let i = 3; i <= sqrt; i += 2) {
29 if (n % i === 0) return false;
30 }
31 return true;
32}
33
34console.log("\nOptimized:");
35console.log("29:", isPrimeOptimized(29));
36console.log("100:", isPrimeOptimized(100));
37
38// Method 3: Find primes in range
39function findPrimesInRange(start, end) {
40 let primes = [];
41 for (let i = start; i <= end; i++) {
42 if (isPrimeOptimized(i)) {
43 primes.push(i);
44 }
45 }
46 return primes;
47}
48
49console.log("\nPrimes between 10 and 30:");
50console.log(findPrimesInRange(10, 30));
51
52// Method 4: Count prime factors
53function countPrimeFactors(n) {
54 let count = 0;
55 let factors = [];
56
57 for (let i = 2; i <= n; i++) {
58 while (n % i === 0) {
59 count++;
60 factors.push(i);
61 n /= i;
62 }
63 }
64
65 return { count, factors };
66}
67
68console.log("\nPrime factors of 60:");
69console.log(countPrimeFactors(60));

Output

2: true
4: false
17: true
20: false

Optimized:
29: true
100: false

Primes between 10 and 30:
[ 11, 13, 17, 19, 23, 29 ]

Prime factors of 60:
{ count: 4, factors: [ 2, 2, 3, 5 ] }

What's going on

Loop to Math.sqrt(n). Stop at n-1 and you waste time. Skip 2's special case and even numbers all look composite except you forgot 2 is prime.

1 is not prime. People argue. Math already settled it.