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 inAnsonsten gilt:
Alle Primzahlen >3 lassen sich darstellen als 6*k-1 oder 6*k+1, dadurch fallen schon wieder einige Zahlen raus!