// Eratosthenes Sieve prime number benchmark in Java import java.awt.*; public class Sieve extends java.applet.Applet implements Runnable { Thread runner; String results1 = "Running Sieve benchmark..."; String results2 = ""; public void start() { repaint(); runner = new Thread(this); runner.start(); } public void stop() { runner.stop(); runner = null; } public void run() { 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 >= 5000) 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; repaint(); } public void paint(Graphics g) { g.setColor(Color.black); g.drawString(results1, 20, 20); g.drawString(results2, 20, 35); } }