Primzahlenbestimmung
-
import java.io.*; public class Prim { public static void main(String[] args) throws IOException { int zahl, i; boolean error = false; BufferedReader din = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Bitte geben sie eine Zahl ein"); zahl = Integer.parseInt(din.readLine()); for (i = zahl; i < 1; i--){ if ((zahl % i) == 0 && i < 1 && i > 1){ error = false; } else{ error = true; } } if (error == false){ System.out.println(zahl + " ist eine Primzahl"); } if (error == true) { System.out.println(zahl + " ist keine Primzahl"); } } }
Ich bekomme bei jeder Eingabe nur raus, dass ich eine Primzahl habe. Wie kann ich denn den Abfrage-Mechanismus besser schreiben ?
Hat da jemand einen Ansatz !
-
cHillb3rT schrieb:
Ich bekomme bei jeder Eingabe nur raus, dass ich eine Primzahl habe.
Das liegt daran, dass deine Schleifenbedingung falsch ist. Deine Schleife wird nie betreten.
Die Bedingung der ersten if-Anweisung ist auch kompletter Unsinn. Wenn i größer als 1 ist und wenn i kleiner als 1 ist? Wie kann eine Zahl gleichzeitig gößer und kleiner als 1 sein?
Aber selbst wenn du das berichtigst, ist der Algorithmus noch falsch. Spiel das doch mal mit Stift und Papier durch.
-
ohne genau hinzugucken, was ist denn mit
for (i = zahl - 1; i > 1; i--){
if ((zahl % i)){
error = true;
}
else{
//nee, hier nix machen
}
}?
-
Das ist fast richtig. Und cHillb3rT ist wieder erfolgreich ums Selberdenken herumgekommen.