Moin moin alle.
Schön das ein paar neue und auch alte Namen wieder da sind.
Das läßt mich auch - nach längerer, z.T. krankheitsbedingter Abwesenheit - in die Tasten greifen:
Ich fand im Spektrum der Wissenschaft einen Artikel unter
DIE FABELHAFTE WELT DER MATHEMATIK
Löst eine einfache Formel die vielen Rätsel um Primzahlen?
https://www.spektrum.de/kolumne/primzahlgeneratoren-loest-eine-formel-die-vielen-raetsel-um-primzahlen/2191965
Darin wird f(x)= [ cos²( Pi*( (x-1)! +1 )/x ) ] (wobei [.] abrundet).
Falls x eine Primzahl ist, ist das Ergebnis ein ganzzahliges Vielfaches von π, ansonsten nicht. f(x) =1 ==> x ist prim!
(Dass das für alle Werte von x gilt, hat Joseph Louis Lagrange im Jahr 1771 bewiesen, die Tatsache ist aber als »Satz von Wilson« bekannt. Der Mathematiker John Wilson hatte diesen Zusammenhang im 18. Jahrhundert als Vermutung zwar hervorgebracht – aber nicht als Erster. Tatsächlich hatte bereits der Gelehrte Alhazen um das Jahr 1000 eine entsprechende Vermutung formuliert, die jedoch in Vergessenheit geriet.)
Benutzt wird f(x) hier als Primzahltest für x.
Ich finde das ist mit Kanonen auf Spatzen schießen!
Untersucht man ((x-1)! +1 )/x, findet man als Phänomen, dass x Teiler dieses Ausdrucks ist, für alle Primzahlen x:
(1+1)/2=1, (1*2+1)/3=1, (1*2*3*4+1)/5=5, (6!+1)/7=103 … aber (1*2*3+1)/4=7/4, (5!+1)/6=121/6, …
Aber auch (x-1)! /x ist interessant. Hier findet man, dass x Teiler von (x-1)! für x nicht prim, d,h, (x-1)! Mod x= 0 (außer x=4):
Das müßte man beweisen:
5!/6=20, 9!/10=4480 … außer 3!/4=1,5!!! Das der Ausdruck für x Prim Teilerfremd ist ist klar,
aber warum man immer für alle Primfaktoren von x entsprechende Teiler in der Fakultät auffindbar sind erschließt sich nicht sofort.
Angenommen es sei so, dann folgt, dass (x-1)! mod x= 0 für alle x nicht prim (außer 4), also auch (x-1)! mod x^(x-1)= 0 für alle x nicht prim (außer 4).
Das läßt sich aber ohne große Zahlen (jedenfalls nicht großer n) für die Fakultäten iterieren: x= 1, x= x*i mod n (i=1…n-1)
Beispiele:
n=2 x=1, x=x*1 mod 2: 1
n=3 … : 1 2
n=4 … : 1 2 2
n=5 … : 1 2 1 4
n=6 … : 1 2 0 … 0
n=7 … : 1 2 6 3 1 6
n=8 … : 1 2 6 0 … 0
n=9 … : 1 2 6 6 3 0 … 0
…
Oder eben als kleines Python-Programm:
(Leerstellen (Blanks), hier „ _ “ Unterstriche!)
# Unterprogramm Primzahdetektor
def prim(n):
___if n==1: return
___if n==4: return False
___x=n-1; m=n;
___for n in range(m-2,1,-1):
______x=(x*n)%m
______if x==0:return False
___return True
Ich finde das ist ein "netter" Algorithmus.
Kennt den schon jemand? (Wo find ich es?)
Viel Spaß mit der "Materie" und einen schönen Sonntag.
VG Siggi N.