Algorythmus umschreiben



  • Wie könnte ich folgenden Algorythmus umschreiben um die erste Primzahl zu finden die grösser ist als die Beginn-Zahl???

    Übernehme die Beginn-Zahl
    Setze die Beginn-Zahl als potentielle Primzahl
    Wiederhole
    Addiere 1 zur potentiellen Primzahl
    Setze möglichen Teiler auf 2
    Wiederhole
    Dividiere potentielle Primzahl durch möglichen Teiler
    Addiere 1 zum möglichen Teiler
    bis Division aufgeht oder der mögliche Teiler > Wurzel aus potenzieller Primzahl
    Falls keine Division aufgeht
    dann ist die potenzielle Primzahl eine Primzahl
    sonst ist die potenzielle Primzahl keine Primzahl
    bis die potenzielle Primzahl eine Primzahl ist
    Schreibe die potentielle Primzahl nieder



  • Algo von Rythmus schrieb:

    Wie könnte ich folgenden Algorythmus umschreiben um die erste Primzahl zu finden die grösser ist als die Beginn-Zahl???

    Wieso umschreiben? Ist das nicht genau das, was der Algorithmus tut?



  • versteh auch nicht ganz was du meinst, du hast uns doch schon eine beschreibung gepostet
    vielleicht meinst du ja auch was anderes, aber dann drück dich bitte besser aus



  • Okay ich habe mich u.U. falsch ausgedrückt. Ich meine ob ihr vieleicht mögliche Verbesserungsvorschläge hättet die in diese Richtung gehen.



  • Für kleinere Primzahlen lohnt sich manchmal folgendes:

    test:=proc (n::posint) 
    if n < 2 then false 
    elif member(n,[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]) then true 
    elif igcd(2305567963945518424753102147331756070,n) <> 1 then false 
    elif n < 10201 then true elif igcd(84969694892334181105323399091873499659260625866489327366115454263422038932
    7076939090906947730950913750978691711866802886149933382509768238672298373796296
    3066757674131126736578936440788157186969893730633113066478620448624949257324022
    6273954373636390387526081667586612559568346306972204475122988482222285500626837
    86342519960225996301315945644470064720696621750477244528915927867113,n) <> 1 then false elif n < 1018081 then true 
    end if 
    end proc;
    

    (evtl. Copyright by Gaston Gonnet)
    Dieser Algorithmus liefert für n aus IN, n<1018080 richtige Ergebnisse und ist recht schnell...

    igcd : ggT
    member : enthalten in

    Ansonsten gilt:
    Alle Primzahlen >3 lassen sich darstellen als 6*k-1 oder 6*k+1, dadurch fallen schon wieder einige Zahlen raus!


Anmelden zum Antworten