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.


Anmelden zum Antworten