Hey Leute,
ich habe folgende Aufgabe zu lösen und ich komme bei einer Kleinigkeit nicht weiter.
Ich soll mit Hilfe des Siebes des Eratosthenes ein Array mit einer benutzerbestimmten Länge nach Primzahlen filtern und dann ausgeben.
Vorgaben sind drei Methoden zu erstellen nach folgendem Muster:
1. int[] anlegenEinesArrays -->Bentzer gibt n an - Array soll mit den Zahlen von 2 bis n+1 befüllt werden
2. int[] siebDesEratosthenes(int[] zahlen)
3. void ausgabe(int[] zahlen)
main methode:
es scheint bei mir in einer der Schleifen der siebDesEratosthenes Methode zu scheitern.
hab schon einiges versucht und das ist nur eine der falschen versuche
Eine zweite Idee wäre:
Scheint der Lösung schon näher zu sein, jedoch gibt er einige nicht Primzahlen mit aus.
Das spuckt er aus für die Eingabe von 80 oO
2, 3, 4, 5, 7, 9, 13, 15, 19, 21, 25, 31, 33, 39, 43, 45, 49, 55, 61, 63, 69, 73, 75, 81,
Hoffe ihr könnte mir sagen wie es richtig sein muss. Ich weiß, dass die jetzige Schleife Quatsch ist
ich habe folgende Aufgabe zu lösen und ich komme bei einer Kleinigkeit nicht weiter.
Ich soll mit Hilfe des Siebes des Eratosthenes ein Array mit einer benutzerbestimmten Länge nach Primzahlen filtern und dann ausgeben.
Vorgaben sind drei Methoden zu erstellen nach folgendem Muster:
1. int[] anlegenEinesArrays -->Bentzer gibt n an - Array soll mit den Zahlen von 2 bis n+1 befüllt werden
2. int[] siebDesEratosthenes(int[] zahlen)
3. void ausgabe(int[] zahlen)
main methode:
Java:
public static void main(String[] args) {
int[] zahlen = anlegenEinesArrays();
zahlen = siebDesEratosthenes(zahlen);
ausgabe(zahlen);
}
es scheint bei mir in einer der Schleifen der siebDesEratosthenes Methode zu scheitern.
hab schon einiges versucht und das ist nur eine der falschen versuche
Java:
public static int[] siebDesEratosthenes(int[] zahlen) {
int k=2;
for (int i = 2; i < zahlen.length;i++) {
if (zahlen[i-2] != 0) {
for (int j = k*i;j < zahlen.length; k++) {
zahlen[j-2] = 0;
}
}
}
return zahlen;
}
Eine zweite Idee wäre:
Java:
public static int[] siebDesEratosthenes(int[] zahlen) {
for (int i = 2; i < zahlen.length;i++) {
if (zahlen[i] != 0) {
for (int j=2; i*j < zahlen.length; j++) {
zahlen[i*j] = 0;
}
}
}
return zahlen;
}
Das spuckt er aus für die Eingabe von 80 oO
2, 3, 4, 5, 7, 9, 13, 15, 19, 21, 25, 31, 33, 39, 43, 45, 49, 55, 61, 63, 69, 73, 75, 81,
Hoffe ihr könnte mir sagen wie es richtig sein muss. Ich weiß, dass die jetzige Schleife Quatsch ist
Zuletzt bearbeitet: