Erklärung zur Methode, Modulator

Tony88

Mitglied
Hallo Java Gemeinde ich bräuchte Hilfe zum Verstehen dieser Methode:
public boolean istPrim(int n)
{
int zaehler = 2;
while(zaehler < n)
{
if(n % zaehler == 0)
{
return false;
}
zaehler ++;
}
return true;
}
Warum wird bei der Berechnung der Prim Zahl 9 false ausgegeben?
Mir ist schon klar dass 9 kein Prim ist aber der Modulator % gibt mir ja einen Rest von 1 aus und müsste mir doch eigentlich true ausgeben.
Es wäre super wenn mir jemand die par Zeilen erklären könnte 🙂

Quelle: Java Lernen mit BlueJ Kapitel 4 Übung 4.19:rtfm:
 
Java:
public boolean istPrim(int n){
   int zaehler = 2;
   while(zaehler < (n/2)){ //kleine Optimierung
      if(n % zaehler == 0){
         return false;
      }
      zaehler ++;
   }
   return true;
}

Wie schon faetzminator geschrieben hat, wird der zähler hochgezählt, in deiner Variante bis n, wobei bis n/halbe reicht, was also den rechnungsaufwand minimiert ;-) Ich glaube soger noch weniger geht =)
Somit testet deine schleife, ob die Zahl durch 2 ohne rest teilbar ist, ist nicht der fall,
also hochzählen und neu testen, somit wird durch 3 geteilt und dieses ist ohne rest teilbar, da 3*3 gleich 9 ergibt ;-)
deine Funktion geht mit return false raus.
Bei 11 würde deins versuchen bis 11 durch 10 zu teilen, was jedoch immer nur mit rest geht, somit ist es die schleife komplett durchgegangen und führt dann das return true aus ;-)
 

Zurück
Oben