Wie programmiere ich ein Programm, das in ein 2dimensoinales Array alle Primzahlzwillinge <= n schreibt, das auf dem hier angegebenen "Sieb des Erathostenes" aufbaut?
Code:
public class Sieb {
protected boolean[] tabelle;
/** Erzeuge neues Sieb.*/
public Sieb (int max) {
tabelle = new boolean[max+1];
for (int j=2; j<tabelle.length; j++) {
tabelle[j]=true;
}
}
/** Streiche Vielfache der Zahl k aus dem Sieb
* (d.h. markiere tabelle[j], j==2k, 3k, 4k, usw. mit false).
*/
public void eliminiereVielfache(int k) {
if (tabelle[k]) {
for (int j=2*k; j<tabelle.length; j += k) {
tabelle[j]=false;
}
}
}
/** Eliminiere alle faktorisierbaren Zahlen aus dem Sieb. */
public void siebe() {
for (int p=2; p<Math.sqrt(tabelle.length); p++) {
eliminiereVielfache(p);
}
}
/** Drucke die Zahlen i, fuer die tabelle[i] == true. */
public void drucke() {
for (int p=2; p<tabelle.length; p++) {
if (tabelle[p]) System.out.print(p+" ");
}
System.out.println();
}
/** Hauptprogramm */
public static void main (String[] argv) {
Sieb s;
if (argv.length==0) {
s = new Sieb(100);
} else {
s=new Sieb(Integer.parseInt(argv[0]));
}
s.siebe();
s.drucke();
}
}
Zuletzt bearbeitet von einem Moderator: