Die Umsetzung des Verfahrens ist nicht besonders effektiv, daher werden einige Verbessungungen vorgenommen:
public class Sieb2 { public static void main(String args[]) { // 1. Deklaration der Variablen int i, j; int [] sieb = new int[101]; // 2. Initialisierung des Feldes // Neu: Feld wird erst ab 2. Element initialisiert for (i=2; i<=100; i++) sieb[i]=i; // 3. Loeschen der Vielfachen // Neu: Gerade Zahlen werden separat behandelt for (j=4; j<=100; j+=2) sieb[j]=0; // Neu: Mit bereits gestrichenen Zahlen wird nicht mehr // gestrichen; gerade Zahlen werden übergangen for (i=3; i<=10; i++) if (sieb[i]>0) for (j=3*i; j<=100; j=j+2*i) sieb[j]=0; // 4. Ausgabe der Primzahlen // Neu: Ausgabe des Index statt Inhalt des Feldelements for (i=2; i<=100; i++) if (sieb[i]>0)
System.out.println(i);
// 5. Beenden des Programms
System.exit(0);
}
}