Friday, November 13, 2009

Eratosthenes Sieve prime number benchmark in Java




// Eratosthenes Sieve prime number benchmark in Java
import java.awt.*;

public class Sieve // extends java.applet.Applet implements Runnable {
{
String results1, results2;

void runSieve()
{
int SIZE = 8190;
boolean flags[] = new boolean[SIZE+1];
int i, prime, k, iter, count;
int iterations = 0;
double seconds = 0.0;
int score = 0;
long startTime, elapsedTime;

startTime = System.currentTimeMillis();
while (true) {
count=0;
for(i=0; i<=SIZE; i++) flags[i]=true;
for (i=0; i<=SIZE; i++) {
if(flags[i]) {
prime=i+i+3;
for(k=i+prime; k<=SIZE; k+=prime)
flags[k]=false;
count++;
}
}
iterations++;
elapsedTime = System.currentTimeMillis() - startTime;
if (elapsedTime >= 10000) break;
}
seconds = elapsedTime / 1000.0;
score = (int) Math.round(iterations / seconds);
results1 = iterations + " iterations in " + seconds + " seconds";
if (count != 1899)
results2 = "Error: count <> 1899";
else
results2 = "Sieve score = " + score;
}

public static void main(String args[])
{
Sieve s = new Sieve();
}

public Sieve()
{
System.out.println("Running Sieve - please wait 10 seconds for results...");
runSieve();
System.out.println( results1 );
System.out.println( results2 );
}

}



No comments:

Post a Comment