Hallo, ich erkläre mal meine Situation. Ich nehme gerade an einem Informatikkurs, eher gesagt Java-Kurs teil, um mein Wissen für das Studium aufzufrischen. Bevor es zu meiner Frage kommt, werde ich erstmal alles reinschreiben, was ich bis jetzt bereits an Code geschrieben habe. Ich weiß, dass es hier Unmengen an Posts zu diesem Thema gibt. Dennoch habe ich nichts gefunden, dass mein Problem löst. Ich bin auch, denke ich ziemlich nah dran, fertig zu sein.
Uns wurde Code vorgegeben, sodass ich es ohne boolean, wie ich es verstehe, implementieren soll. Hier noch die Aufgabenstellung:

Folgender Code wird mir vorgegeben:
Diesen habe ich dann wie folgt erweitert:
Mir werden hierbei aber neben den Primzahlen Nicht-Primzahlen angegeben, die mit Nullen markiert werden! In der Ausgabe sollen aber nur die Primzahlen ausgegeben werden.

Nun soll ich ja nur Primzahlen am Ende ausgeben und habe es dann mit diesem Ansatz probiert:
Alle Primzahlen unter 10 werden richtig angegeben, aber alle über werden als 0 ausgegeben. Wie mache ich das, dass diese auch noch korrekt angegeben werden? Ich habe auch bereits im Forum meines Kurses die Frage gestellt. Nur will ich eben mehrere Meinungen erhalten können.
Danke im Voraus für eure Hilfe!
Uns wurde Code vorgegeben, sodass ich es ohne boolean, wie ich es verstehe, implementieren soll. Hier noch die Aufgabenstellung:

Folgender Code wird mir vorgegeben:
Java:
class Prim {
int[] primzahlenBestimmen(int n) {
int[] zahlen = new int[n+1];
// Zunaechst sind alle Zahlen nicht markiert
for (int i = 0; i <= n; i++) {
zahlen[i] = i;
}
// 0 und 1 sind keine Primzahlen, werden daher markiert
zahlen[0] = 0;
zahlen[1] = 0;
// Fuegen Sie Ihre Implementierung hier ein.
return zahlen;
}
public static void main(String[] args) {
Prim prim = new Prim();
int[] output = prim.primzahlenBestimmen(20);
System.out.println("Die Primzahlen kleiner gleich 20 lauten:");
// Mit der folgenden Zeile kann ein Feld testweise ausgegeben werden
System.out.println(Arrays.toString(output));
}
}
Diesen habe ich dann wie folgt erweitert:
Java:
class Prim {
int[] primzahlenBestimmen(int n) {
int[] zahlen = new int[n+1];
// Zunaechst sind alle Zahlen nicht markiert
for (int i = 0; i <= n; i++) {
zahlen[i] = i;
}
// 0 und 1 sind keine Primzahlen, werden daher markiert
zahlen[0] = 0;
zahlen[1] = 0;
// Fuegen Sie Ihre Implementierung hier ein.
for (int i = 2; i <= n; i++){
for (int j = 2; j < i; j++){
if(i%j == 0){
zahlen[i] = 0;
}
}
}
int a = 0;
for (int i = 0; i<= n; i++){
if(zahlen[i] != 0){
a++;
}
}
int b = 0;
int [] primzahlen = new int [a];
for (int i = 0; i < a; i++){
if (zahlen[i] != 0){
primzahlen[b] = i;
}
}
return zahlen;
}
public static void main(String[] args) {
Prim prim = new Prim();
int[] output = prim.primzahlenBestimmen(20);
System.out.println("Die Primzahlen kleiner gleich 20 lauten:");
// Mit der folgenden Zeile kann ein Feld testweise ausgegeben werden
System.out.println(Arrays.toString(output));
}
}
Mir werden hierbei aber neben den Primzahlen Nicht-Primzahlen angegeben, die mit Nullen markiert werden! In der Ausgabe sollen aber nur die Primzahlen ausgegeben werden.

Nun soll ich ja nur Primzahlen am Ende ausgeben und habe es dann mit diesem Ansatz probiert:
Java:
class Prim {
int[] primzahlenBestimmen(int n) {
int[] zahlen = new int[n+1];
// Zunaechst sind alle Zahlen nicht markiert
for (int i = 0; i <= n; i++) {
zahlen[i] = i;
}
// 0 und 1 sind keine Primzahlen, werden daher markiert
zahlen[0] = 0;
zahlen[1] = 0;
// Fuegen Sie Ihre Implementierung hier ein.
for (int i = 2; i <= n; i++){
for (int j = 2; j < i; j++){
if(i%j == 0){
zahlen[i] = 0;
}
}
}
int a = 0;
for (int i = 0; i<= n; i++){
if(zahlen[i] != 0){
a++;
}
}
int b = 0;
int anzahl = 0;
int [] primzahlen = new int [a];
for (int i = 0; i < a; i++){
if (zahlen[i] != 0){
zahlen[b] = i;
primzahlen[anzahl] = i;
anzahl++;
}
}
return primzahlen;
}
public static void main(String[] args) {
Prim prim = new Prim();
int[] output = prim.primzahlenBestimmen(20);
System.out.println("Die Primzahlen kleiner gleich 20 lauten:");
// Mit der folgenden Zeile kann ein Feld testweise ausgegeben werden
System.out.println(Arrays.toString(output));
}
}
Alle Primzahlen unter 10 werden richtig angegeben, aber alle über werden als 0 ausgegeben. Wie mache ich das, dass diese auch noch korrekt angegeben werden? Ich habe auch bereits im Forum meines Kurses die Frage gestellt. Nur will ich eben mehrere Meinungen erhalten können.
Danke im Voraus für eure Hilfe!