Prime number generator in java using Sieve of Eratosthenes algorithm

  • A prime number is a natural number greater than 1 that has no positive divisors other than 1 & itself.
    • e.g.Number 7 is prime number because 7 have two factor i.e. 1 & 7
    • e.g.Number 4 is not prime number because 4 have factors of 1, 2 & 4.
    • List of prime numbers from 0 – 30 are 2, 3, 5, 7, 11, 13, 17, 19, 23, 29.
  • Sieve of Eratosthenes is a simple algorithm for finding prime numbers up to given limit.
  • Sieve of Eratosthenes algorithm is based upon elimination technique.
  •  The algorithm iteratively eliminates the composite numbers, which are multiple of each prime.

Algorithm – find prime numbers till given number ( 2 to number)

  • Create a list of consecutive integers from 2 through n: (2, 3, 4, …, n).
  • Initially, let p equal 2, the smallest prime number.
  • Enumerate the multiples of p by counting to n from 2p in increments of p, and mark them in the list (these will be 2p, 3p, 4p, … ; the p itself should not be marked).
  • Find the first number greater than p in the list that is not marked. If there was no such number, stop. Otherwise, let p now equal this new number (which is the next prime), and repeat from step 3.

Example: Prime numbers using Sieve of Eratosthenes algorithm

  • Generate the prime numbers till 30 ( from 2 to 30)
prime number Sieve Eratosthenes
Fig1 : Generate prime numbers till 30
  • First number in the table is 2, so eliminates all number multiple of 2.
remove prime number
Fig 2: Eliminates number multiple of 2
  • Second number in table is 3, so eliminates all number multiple of 3.
Fig 3: Eliminates all numbers multiple of 3
Fig 3: Eliminates all numbers multiple of 3
  • Next number in table is 5, so eliminates all number multiple of 5.
Fig 4: Eliminates all numbers multiple of 5
Fig 4: Eliminates all numbers multiple of 5

The unmarked numbers in the table are prime numbers till 30: 2 3 5 7 11 13 17 19 23 29

Program: prime number generator in java using Sieve of Eratosthenes algorithm

package org.learn.arrays;

import java.util.Arrays;
import java.util.Scanner;

public class SieveEratosthenes {
	public static void generatePrimeNumbers(int maxNumber) {

		boolean[] isPrime = new boolean[maxNumber + 1];
		Arrays.fill(isPrime, true);

		int primeRange = (int) Math.sqrt(maxNumber);
		for (int number = 2; number <= primeRange; number++) {
			if (isPrime[number]) {
				for (int iEliminate = number * number; iEliminate <= maxNumber; iEliminate += number) {
					isPrime[iEliminate] = false;
				}
			}
		}
		int number = 2;
		while (number <= maxNumber) {
			if (isPrime[number]) {
				System.out.printf("%d ", number);
			}
			number++;
		}

		return;
	}

	public static void main(String[] args) {

		try (Scanner scanner = new Scanner(System.in)) {
			System.out.print("1. Enter the number:  ");
			int maxNumber = scanner.nextInt();
			System.out.printf("2. Prime numbers till %d : ", maxNumber);
			generatePrimeNumbers(maxNumber);
		}
	}
}

Output: prime numbers in java using Sieve of Eratosthenes algorithm

1. Enter the number:  30
2. Prime numbers till 30 : 2 3 5 7 11 13 17 19 23 29 

1. Enter the number:  50
2. Prime numbers till 50 : 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 
Scroll to Top