Sieb des Eratosthenes |
DudiPupan
Grünschnabel
Dabei seit: 30.10.2011
Beiträge: 5
|
|
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 14:45 |
|
|
DudiPupan
Grünschnabel
Dabei seit: 30.10.2011
Beiträge: 5
|
|
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?
|
|
01.11.2011 12:48 |
|
|
GertGundel unregistriert
|
|
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
|
|
25.01.2016 11:19 |
|
|
|