preko
Erfahrenes Mitglied
Hi,
ich fange grad mit JAVA an und möchte eine Primzahlenberechnung programmieren (Performance außen vor). Deshalb habe ich folgenden Code geschrieben:
Dabei soll die Variable "start" von 2 aufwärts bis zum festgelegten Endwert ansteigen, bis zu dem man die Primzahlen berechnet haben möchte.
Die Variable "i" soll von 2 an bis max. dem Wert "start" ansteigen um zu prüfen, ob der Wert den "start" aktuell hat durch einen Wert zwischen 1 und "start" teilbar ist.
Nun bekomme ich weitestgehend das Ergebnis, welches ich haben möchte, allerdings gibt er mir bei tatsächlichen Primzahlen die Primzahl mit allen Teilberechnungen aus (in der "else" Anweisung).
Ich möchte jedoch, dass er, wenn er feststellt, dass die Zahl eine Primzahl ist, nur die Primzahl ausgibt ohne alle "notwendingen" Berechnungen. Setze ich am Ende der "else"-Anweisung einen "break;"-Befehl, so bleibt der Wert "i" auf 2 und wird nicht hochgezählt.
Allerdings ist mir auch aufgefallen, dass z. B. die Zahl 45 fälschlicherweise als Primzahl deklariert wird. :-( Da muss also noch "der Wurm" drin sein...
Ich hoffe, ich habe halbwegs rüberbringen können, wo es "drückt". Was muss ich ändern, damit die Ausgabe entsprechend passt?
Vielen Dank im voraus!
ich fange grad mit JAVA an und möchte eine Primzahlenberechnung programmieren (Performance außen vor). Deshalb habe ich folgenden Code geschrieben:
Code:
public class Zahlen {
public static void main(String[] args) {
for(int start = 2; start <= 15; ++start) { // Aufsteigender Zahlenlauf bis zur definierten Höhe
//System.out.print(start);
System.out.print("\n");
for(int i = 2; i < start; ++i) { // Aufsteigender Teiler bis max. Zahlenhöhe
//System.out.println(" / " + i);
if(start % i == 0) {
//System.out.println(start + "/" + i + " ist teilbar!");
break;
}
else {
System.out.println(" " + start + "(" + i + ") ist Prim!");
}
}
}
}
}
Dabei soll die Variable "start" von 2 aufwärts bis zum festgelegten Endwert ansteigen, bis zu dem man die Primzahlen berechnet haben möchte.
Die Variable "i" soll von 2 an bis max. dem Wert "start" ansteigen um zu prüfen, ob der Wert den "start" aktuell hat durch einen Wert zwischen 1 und "start" teilbar ist.
Nun bekomme ich weitestgehend das Ergebnis, welches ich haben möchte, allerdings gibt er mir bei tatsächlichen Primzahlen die Primzahl mit allen Teilberechnungen aus (in der "else" Anweisung).
Ich möchte jedoch, dass er, wenn er feststellt, dass die Zahl eine Primzahl ist, nur die Primzahl ausgibt ohne alle "notwendingen" Berechnungen. Setze ich am Ende der "else"-Anweisung einen "break;"-Befehl, so bleibt der Wert "i" auf 2 und wird nicht hochgezählt.
Allerdings ist mir auch aufgefallen, dass z. B. die Zahl 45 fälschlicherweise als Primzahl deklariert wird. :-( Da muss also noch "der Wurm" drin sein...
Ich hoffe, ich habe halbwegs rüberbringen können, wo es "drückt". Was muss ich ändern, damit die Ausgabe entsprechend passt?
Vielen Dank im voraus!
Zuletzt bearbeitet: