Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
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.
Advertisements
