How to generate Prime Numbers in JavaScript?

A prime number is a natural number greater than 1 that has no positive divisors other than 1 and itself. In JavaScript, we can generate prime numbers using different approaches.

Basic Prime Check Algorithm

The most straightforward method checks if a number is divisible by any number from 2 to itself minus 1:

<html>
  <head>
    <title>JavaScript Prime Numbers</title>
  </head>
  <body>
    <script>
      for (var limit = 1; limit <= 20; limit++) {
        var isPrime = true;
        
        // 1 is not a prime number
        if (limit === 1) {
          isPrime = false;
        }
        
        // Check for divisors from 2 to limit-1
        for (var i = 2; i < limit; i++) {
          if (limit % i === 0) {
            isPrime = false;
            break;
          }
        }
        
        if (isPrime && limit > 1) {
          document.write(limit + "<br>");
        }
      }
    </script>
  </body>
</html>
2
3
5
7
11
13
17
19

Optimized Prime Generator Function

For better performance, we only need to check divisors up to the square root of the number:

function isPrime(num) {
  if (num <= 1) return false;
  if (num <= 3) return true;
  if (num % 2 === 0 || num % 3 === 0) return false;
  
  for (let i = 5; i * i <= num; i += 6) {
    if (num % i === 0 || num % (i + 2) === 0) {
      return false;
    }
  }
  return true;
}

function generatePrimes(limit) {
  const primes = [];
  for (let i = 2; i <= limit; i++) {
    if (isPrime(i)) {
      primes.push(i);
    }
  }
  return primes;
}

const primes = generatePrimes(30);
console.log("Prime numbers up to 30:", primes);
Prime numbers up to 30: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

Sieve of Eratosthenes Algorithm

The most efficient method for generating multiple primes uses the Sieve of Eratosthenes:

function sieveOfEratosthenes(limit) {
  const sieve = new Array(limit + 1).fill(true);
  sieve[0] = sieve[1] = false; // 0 and 1 are not prime
  
  for (let i = 2; i * i <= limit; i++) {
    if (sieve[i]) {
      // Mark multiples of i as non-prime
      for (let j = i * i; j <= limit; j += i) {
        sieve[j] = false;
      }
    }
  }
  
  const primes = [];
  for (let i = 2; i <= limit; i++) {
    if (sieve[i]) {
      primes.push(i);
    }
  }
  return primes;
}

const primesUpTo50 = sieveOfEratosthenes(50);
console.log("Primes up to 50:", primesUpTo50);
console.log("Count:", primesUpTo50.length);
Primes up to 50: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
Count: 15

Performance Comparison

Method Time Complexity Best For
Basic Check O(n) Single number check
Optimized Check O(?n) Few numbers
Sieve of Eratosthenes O(n log log n) Many primes up to limit

Conclusion

Use the basic method for simple cases, the optimized version for checking individual numbers, and the Sieve of Eratosthenes when generating many prime numbers efficiently.

Updated on: 2026-03-15T23:18:59+05:30

3K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements