import java.io.*; /** Funktion: Primzahlerzeugung nach der Methode "Sieb des Erastosthenes" Applikation ohne Oberfläche, läuft in der Dos-Box: "java erastos" @author DG1XPZ @version JDK 131 */ class erastos{ /** Funktion: Konstuctor @param Primzahl Zahl, bis zu der Primzahlen ausgegeben werden sollen */ erastos(int prim){ getPrim(prim); } /** Funktion: Konstuctor */ erastos(){} static private boolean[] zahlen; //Array "zahlen" deklarieren public static void main(String[] vArgs){ erastos e = new erastos(); //Instanz von der Klasse "erastos" erzeugen System.out.println("Sieb des Erastosthenes, Primzahlen ausgeben."); System.out.println("Bitte Zahl eingeben, bis zu der die Primzahlen ausgegeben werden sollen:"); int prim = e.eingabe(); //Max-Wert von Tastatur holen zahlen=e.getPrim(prim); System.out.println(e.toString()); //Feld "zahlen" bearbeiten } /** Funktion: Eingabe (ganze Zahl) von Tastatur einlesen @exception IOException Wenn keine Zahlen sondern Buchstaben oder Zeichen eingegeben wurden @return Die zurückgegebene Integerzahl */ private int eingabe(){ int m=0; BufferedReader eing=new BufferedReader (new InputStreamReader(System.in)); // Eingabepuffer erzeugt, für Eingabe über Tastatur try{ //Fehlerbehandlung einleiten (try=versuche) String eingstr=eing.readLine(); // Lese String von Eingabepuffer (Tastatur) m=Integer.parseInt(eingstr); // Umwandeln String in Zahl }catch(java.io.IOException ioe){ // wenn Fehler dann Meldung erzeugen System.err.println("Fehler! Eingabe konnte nicht interpretiert werden!"); // Ausgabe der Fehlermeldung wenn keine Zahlen eingegeben werden } return m; //Rückgabe der ganzen Zahl }//private int eingabe() /** Funktion: Primzahlen erzeugen nach der Methode "Sieb des Erastosthenes" 1. Boolean-Array mit true bis max befüllen 2. weil 0 und 1 laut Def. keine Primzahlen sind, diese streichen
3. dann naechste nicht gestrichene Zahl suchen (2)
4. um den Wert dieser Zahl weitergehen und streichen (4,6,8,10)
5. wenn Ende des Arrays erreicht dann zu Punkt 3. gehen
6. übrig bleiben alle nichtgestrichenen Zahlen -> Primzahlen (2,3,5,7)
@param prim Die größte Zahl bis zu der die Primzahlen gesucht werden sollen @return Rückgabe des Arrays mit Primzahlen (Feld:true=Primzahl) */ public boolean[] getPrim(int prim){ zahlen=new boolean[prim+1]; zahlen[1]=false; //die 1 streichen for (int i=2;i