Primzahlen - Verständnisproblem

ProgFreak

Mitglied
Hallo!

Ich verstehe irgendwie grade die folgende Funktion nicht. Die Funktion soll zurück liefern ob die als Parameter übergebene Variable eine Primzahl ist.

Code:
    public static boolean isprime(int n) {
        if (n < 2) {
            return false;
        }
        else if (n == 2) {
            return true;
        }
        else if (n % 2 == 0) {
            return false;
        }
        else {
            for (int i=3; i*i<=n; i+=2) {
                if (n%i==0) {
                    return false;
                }
            }
            return true;
        }
    }

Die ersten 3 Bedinungen machen ja noch Sinn. Aber die letzte mit der for-Schleife versteh ich rein garnicht. Kann die mir bitte jemand erklären?

Vielen Dank im Vorraus

ProgFreak
 
Es wird überprüft ob die zu Prüfened Zahl in der Restklasse 0 der Modulooperation über i ist.

Die Ganze Schleife wird von 3 bis \sqrt{n} durchgeführt, geht also jede sinnvolle Möglichkeit durch. Dabei werden natürlich nur die ungeraden Zahlen betrachtet, da es außer der 2 keine geraden Primzahlen gibt.

HTH
 
Zurück