Sieb des Eratosthenes |
31.10.2011, 14:45 | Auf diesen Beitrag antworten » |
DudiPupan | Sieb des Eratosthenes Meine Frage: Hallo allerseits, ich arbeite gerad an meinen Übungen für den Programmierkurs und bin gerade bei folgender Aufgabe: Das Sieb des Eratosthenes ist ein Algorithmus zur Bestimmung aller Primzahlen kleiner oder gleich einer vorgegebenen Zahl n. Dazu notiert man alle Zahlen zwischen 2 und n. Dann gibt man die Primzahl 2 aus, und streicht alle Vielfachen von 2 aus der Zahlenliste. Dann gibt man die nachste Zahl in der Liste aus, die Primzahl 3, und streicht alle Vielfachen von 3. Da die 4 als ein Vielfaches von 2 nicht mehr in der Liste existiert, wird als nachstes die Primzahl 5 ausgegeben, und wiederum alle Vielfachen von 5 gestrichen. Dieser Vorgang wird bis zur Zahl n fortgefuhrt. Am Ende erhalt man alle Primzahlen kleiner oder gleich n als Ausgabe. Meine Ideen: Das soll ich in BlueJ in einer Methode implementieren. Ich denke mal, dass ich eine boolean-Methode brauche, oder? Ich versthe nur noch nicht ganz, wie das mit dem "rausstreichen" der verschiedenen Werte gemeint ist, bzw wie es umzusetzen ist. Vielen Dank |
|
|
31.10.2011, 17:08 | Auf diesen Beitrag antworten » |
Jannik93 | Hallo, also ich hab mir das mal alles aufgemalt und hab nun die Frage ob die ausgegebenden Zahlen in der Liste gestrichen werden sollen oder später auch ausgegeben werden sollen? Zu deiner Frage du brauchst wahrscheinlich ein Array wo du dann den Benutzer fragst wie die Zahl n lauten soll z.b 12. -->Sieb des Eratosthenes |
01.11.2011, 12:48 | Auf diesen Beitrag antworten » |
DudiPupan | Also ich hab das jetzt mal auf folgendem Weg versucht: public boolean [] aufgabe3(int n) { boolean[] p = new boolean[n+1]; p[1]=false; for(int i=2; i<p.length; i++) { p[i]=true; } for (int i=2; i<=(n+1)/2;i++) { for(int j=2; j<(n+1)/i; j++) { p[i*j]=false; } } return p; } Jedoch spuckt er den letzten wert immer mit dem wahrheitswert true aus, was mir ganz und gar nicht passt! Was habe ich übersehen, wo liegt der fehler? |
25.01.2016, 11:19 | Auf diesen Beitrag antworten » |
GertGundel | Die Lösung public boolean [] aufgabe3(int n) { boolean[] p = new boolean[n+1]; p[1]=false; for(int i=2; i<p.length; i++) { p[i]=true; } for (int i=2; i<=(n)/2;i++) { for(int j=2; j<=(n)/i; j++) { p[i*j]=false; } } return p; so gehts |
Anzeige | |
|
|
Verwandte Themen
Die Beliebtesten » |
Die Größten » |
Die Neuesten » |