Description

This was one of my very first Java projects. The objective was to design the most efficient algorithm possible for calculating prime numbers.

Performance

My algorithm generates all prime numbers in the interval [1, 10000000] in 2.93 seconds.


Source Code

public abstract class PrimeGenerator { private static int[] c; public static void main(String[] args) { generatePrimes(2147483647); } public static void generatePrimes(final int end) { final long start = System.nanoTime(); c = new int[end/8+100]; c[0] = 2; int d = 0; for(int i=2; i < end; i++) { if(checkPrime(i)) { System.out.println(i); c[d++] = i; } } System.out.println("Duration: " + (System.nanoTime()-start)/1E9 + " seconds"); } public static boolean checkPrime(final int a) { final int s = (int)Math.sqrt(a); for(int i=0; c[i] <= s; i++) if(a % c[i] == 0) return false; return true; } }

Download

PrimeGenerator.jar (please start via console: "java -jar your\directory\to\PrimeGenerator.jar")