Methode zu Berechnung der Anzahl von Primzahlen innerhalb eines Intervalls

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Methode zu Berechnung der Anzahl von Primzahlen innerhalb eines Intervalls

    Hallo zusammen! =)

    Ich bringe mir im Moment selber Java bei und wollte versuchen eine Methode zu schreiben, in der die Anzahl von Primzahlen innerhalb eines Intervalls gezählt werden werden. Beim kompilieren wird mir jetzt immer wieder ein Fehler geschmissen, den ich nicht verstehe und ich sehe keinen Fehler in meinem Programm (wie so häufig ^^)
    Könnt ihr mir villeicht weiter helfen?

    Hier der Code:

    Quellcode

    1. import javax.swing.JOptionPane;
    2. class Primzahlverteilung {
    3. public static int rechnung() {
    4. int anfang, ende, zaehler;
    5. zaehler = 0;
    6. if (anfang < 2) //ignorieren von 0 und 1 in der Eingabe
    7. anfang = 2;
    8. while (anfang != ende) { //abtasten des Intervalls
    9. boolean value = true;
    10. int x = 2;
    11. while (x * 2 < anfang && value) { //Überprüfung auf Primzahl
    12. if (anfang % x == 0)
    13. value = false;
    14. x++;
    15. }
    16. if (value) //zählen der Primzahlen
    17. zaehler++;
    18. anfang++;
    19. }
    20. return zaehler;
    21. }
    22. public static void main(String[] args) {
    23. int anfang, ende, zaehler;
    24. anfang = Integer.parseInt(JOptionPane.showInputDialog (null, "Beginn des Intervalls: "));
    25. ende = Integer.parseInt(JOptionPane.showInputDialog (null, "Ende des Intervalls: "));
    26. JOptionPane.showMessageDialog (null, rechnung(anfang, ende));
    27. }
    28. }
    Alles anzeigen
  • Hey,

    wenn Anfang größer Ende ist hast du eine Endlosschleife.

    ende = 5
    anfang = 6
    anfang != ende -> true
    anfang++

    ende = 5
    anfang = 7
    anfang != ende -> true
    anfang ++

    [...]

    Korrekt währe:

    Quellcode

    1. while (anfang <= ende) {
    2. System.out.println("foo");
    3. }


    wenn (anfang kleiner oder gleichgroß ende) { tu etwas }

    Ist mir nur gerade aufgefallen ;)

    Gruß,
    Erasel
    My lovely mister singing club...