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")