Primzahltester - Fehler gesucht!



  • Hallo!

    Das Programm soll jede eingegebene ganze Zahl darauf testen, ob sie eine Primzahl ist, oder nicht.

    Dazu musste man bestimmte Schritte einhalten. Und zwar hier: Aufgabe 6

    Also hab' ich das Programm geschrieben und es funktioniert auch:

    import java.util.*;
    
    public class Primzahltest{
     public static void main(String[] args) {
    
    Locale.setDefault(Locale.US);
     Scanner sc = new Scanner(System.in);
    
    long zahl;
    System.out.print("Bitte eine ganze Zahl eingeben ");
     zahl = sc.nextLong();
    
    long teiler=1;
    long divisor=2;
    
    long maxdivisor = Math.round(Math.sqrt(zahl));
    
     do {
    
        if(zahl%divisor == 0) {
    
          teiler = divisor;
    }
    
        divisor++;
    
    } while((divisor<= maxdivisor+2) &&
            (teiler==1));
    
        if(teiler>1) {
    
          System.out.println(zahl + " ist KEINE Primzahl");
    }
        else {
    
          System.out.println(zahl + " ist EINE Primzahl"); 
    }
    
    } 
    }
    

    Das Problem ist nun das folgende: Die Zahl 3 wird als keine Primzahl ausgegeben. Für jede weitere Zahl, die ich bischer eingegeben habe, gibt das Programme allerdings das richtige Ergebnis raus.

    Worin liegt denn der Fehler?



  • Hallo,

    while((divisor<= maxdivisor+2) ist true, wenn divisor = 3 ist.

    Jockel



  • Dann liegt es wohl an der vorgegebenen Formel, nehme ich mal an?


Log in to reply