Primzahl berechnen

  • Hey zusammen,


    ich habe auf ner webseite eine aufgabe gefunden, wo man die Primzahlen berechnen muss.


    Hier der originale code der seite, dazu habe ich mal paar fragen:



    1. Was ist den ein Modulus ?
    2. Warum wird jetzt in die erste for schleife : $unteilbar = true reingeschrieben ?
    Diese schleife erstellt doch nur die zahl 1 bis 100. Und man teilt dort auch nichts.
    3. Die 2te for schleife wird ja gemacht zum teilen von $i und $k ?
    4.

    PHP
    1. if(!($i % $k))
    2. {
    3. $unteilbar = false;
    4. break;
    5. }

    Dieser code sagt ja. Wenn $i % $k nicht teilbar sind ist $unteilbar false. Was ist das % ? Warum wird da jetzt break verwendet?


    Freue mich auf eure Hilfe. :)


    Gruß, Stef

  • Modulus ist die Rechenoperation mit dem %-Zeichen. Dabei handelt es sich um eine Division, wobei der Rest ermittelt wird:


    PHP
    1. $division = 7 / 3; // 2.3333333333333
    2. $modulus = 7 % 3; // 1 ( Die 3 passt 2 mal in die 7 [2 * 3 = 6] und als Rest bleibt 1)


    $unteilbar ist jetzt der Indikator dafür, ob nach dem Durchlauf der zweiten Schleife eine Ausgabe stattfindet. Es wird jede Zahl bis zur aktuellen auf Teilbarkeit geprüft und wenn eine Teilbarkeit festgestellt wurde, wird $unteilbar auf false gesetzt und mittels break die innere Schleife abgebrochen. Da $unteilbar jetzt false ist, findet keine Ausgabe statt und es wird mit der nächsten Zahl weitergemacht.


    Wenn eine teilbare Zahl gefunden wurde weiß man bereits, dass es sich um KEINE Primzahl handelt, die verbleibenden Zahlen zu prüfen ist daher nicht nötig. Deswegen kann man mittels break abbrechen.


    Der Algorithmus eignet sich übrigens nicht für sehr große Zahlen, da die Anzahl der Durchläufe der Schleifen exponentiell wächst.


    Du siehst schon warum ich sagte, dass Algorithmik vor Allem mit Mathematik zu tun hat :)


    Die erste Schleife müsste übrigens auch bei 2 anfangen zu zählen. 1 ist keine Primzahl.

  • was Basi sagt und


    1. Modulus http://php.net/manual/de/language.operators.arithmetic.php

    Zitat

    Rest von $a geteilt durch $b



    Ich finde $unteilbar und $i $k sind schlecht gewählt.
    Siehe Comments:

  • Hey,


    aso ok. So ist das.


    Ja das sehe ich langsam. Am besten man schreibt erstmal was man alles braucht. Dann hat man schon sozusagen einen Plan. Ist besser finde ich. Da hat man eine struktur nach der man geht. Dann weiß man auch was zu machen ist und hat dann mehr ideen wie es machbar ist als wenn man nichts hinschreibt.


    Danke für eure Hilfe.


    Gruß,Stef