Zum Inhalt springen

Benutzer:Abrankov/Vorlesung/Lucas-Test (A.Brankova und T.Nikolaenkova)

Aus Wikiversity

„Es wird wohl noch mindestens eine Million Jahre vergehen, bevor wir die Primzahlen verstehen“ Paul Erdös


Eine wesentliche Rolle in der Zahlentherie spielt der Begriff der Primzahl. Diese Arbeit beschäftigt sich mit der Bestimmung der Primalität einer Zahl mit Hilfe von Lucas-Test.




Lucas-Test



Primzahltests auf Grundlage von Kongruenzen


Édouard Lucas



Satz (Lucas Test)  

Eine natürliche Zahl n ist genau dann eine Primzahl, wenn es eine

natürliche Zahl 0<a<n gibt mit

an11modn, aber an1q≢1modn
für alle Primteiler q von n1.

Beweis  



Wir wollen zeigen, dass n=61 prim ist. Wegen n1=60=2235 folgt dies aus

2602=230=(26)5=6453560≢1mod61,
2603=220=(26)322=6432233447≢1mod61,
2605=212=(26)2=642329≢1mod61.


Eine direkte Verallgemeinerung des Lucas Test ist der Pocklington Test:



Satz (Pocklington)  

Sei n eine natürliche Zahl, so dass n1 eine Faktorisierung der Form n1=RF besitzt, wobei alle Primteiler von F bekannt sind. Weiterhin gebe es eine natürliche Zahl 0<a<n mit
  1. an11modn
  2. ggT(an1q1,n)=1
für alle Primteiler q von F. Ist dann Fn, so ist n eine Primzahl.

Beweis  


Die anderen berühmten Primzahlen sind die Fermatschen Primzahlen, obwohl man davon nur 5 Stück kennt und vermutet, dass es keine weiteren gibt. Auch für diese Zahlen gibt es einen speziellen Test, den Pepin Test. Er beruht auf dem Lucas Test, der immer anwendbar ist, wenn man die Primteiler von n1 kennt. Für die Fermatschen Primzahlen reicht es aus, im Lucas Test die Zahl a=3 zu überprüfen:



Satz (Pepin Test)  

Die Zahl

Fr=22r+1, r1, ist genau dann eine Primzahl, falls

3Fr121modFk.

Beweis  



Da Fr doppelt exponentiell in r wächst, kann man den Test per Hand nur für sehr kleine r durchführen. Wir betrachten hier F2=222+1=24+1=17. Diese Zahl ist prim, weil

3F212=323=38=(34)21321mod17.




Bei der Anwendung des Lucas Tests auf eine beliebige Zahl n gibt es zwei Probleme:

  1. Man muss die Primteiler von n1 kennen. Dies ist ein Faktorisierungsproblem und damit im Allgemeinen schwierig.
  2. Man muss alle n1 Werte für a überprüfen. Dies bedeutet einen sehr hohen Rechenaufwand. (Die Anzahl könnte man verkleinern, wenn man berücksichtigt, dass es φ(n1) Primitivwurzeln modulo n für n prim gibt. Man bleibt aber in der gleichen Größenordnung für den Rechenaufwand.)

Um das erste Problem in den Griff zu bekommen, könnte man hoffen, dass ein n bereits prim ist, falls an11modn ist für alle zu n teilerfremden a im Bereich von 1 bis n1. Das ist aber leider nicht richtig.



Satz (Miller-Rabin Test)

Sei n3 ungerade und n1=2tm für m ungerade. n ist genau dann eine Primzahl, wenn für jede zu n teilerfremde Zahl 0<a<n gilt
am1modn oder 2sm1modn für  ein s{0,1,,t1}.
Ist n keine Primzahl, so erfüllt höchstens ein Viertel alle Zahlen a eine der Bedingungen.


Wir möchten überprüfen, ob 89 mit Miller-Rabin Test eine Primzahl ist. Es gilt n1=88=2311, also t=3. Wir testen für zwei zufällige Zahlen a=3 und a=5 erhalten wir:

31137modn
32.1137234modn
34.113721modn


51155modn
52.115521modn


Die zwei Testzahlen erfüllen die Testbedingung.





Primzahltests auf Grundlage von Lucas-Folgen




Lucas-Folgen



Gegeben sei die Gleichung X2PX+Q=0 mit P,Q und P0,Q0, die Lösungen seien die reellen Zahlen a und b,ab. Un und Vn werden durch

Un=an+bnab,n0
Vn=an+bna+b,n0

definiert und Lucas-Folgen genannt.


Die Gleichung X2PX+Q=0 hat Diskriminante D=P24Q0 und damit die Lösungen

a=P+D2 und b=P+D2.

Man beachte, dass D0(mod4)oderD1(mod4).


Die Folgenglieder für n=0undn=1 kann man leicht ablesen:

U0=0,U1=1
V0=2,V1=a+b=P


Die Lucas-Folgen erfüllen die Rekursion


Un+2=PUn+1QUn

bzw.

Vn+2=PVn+1QVn,wobein0,


Das heisst, dass jeder Term hängt linear von den zwei vorherigen ab.

Diese Rekursionen kann man durch Nachrechnen überprüfen.



PUn+1QUn=(a+b)an+1bn+1ababanbnab=an+2abn+1+ban+1bn+2an+1b+abn+1ab=an+2bn+2ab=Un+2.


Die Richtigkeit der zweiten Rekursion kann analog gezeigt werden.


Die Lucas-Folgen haben noch weitere Eigenschaften. Man geht davon aus, dass m≱n ist, dann gilt:



Um+n=am+nbm+nab=(ambm)(an+bn)abanbn(amnbmn)ab=UmVnQnUmn;



Vm+n=am+n+bm+n=(am+bm)(an+bn)anbn(amn+bmn)=VmVnQnVmn.


Daraus für m=n folgt:


U2n=UnVnQnU0=UnVn


V2n=VnUnQnV0=Vn22Qn


und für m=n+1:



U2n+1=Un+1VnQnU1=Un+1VnQn


V2n+1=Vn+1VnQnV1=Vn+1VnQnP.


Damit wurde gezeigt, dass alle Folgeglieder aus sind.




Teilbarkeitseigenschaften der Folgeglieder Un



Für ein quadratfreies D heisst die Menge

Q(D)=a+bDmita,b quadratischer Zahlenkörper.

Für ein a=a1+a2D ist dann  a=a1a2D.


Sei P24Q=c2D mit c,D und D quadratfrei. Ist D>1, so sind die Lösungen a,b der Gleichung X2PX+Q=0 irrationale Zahlen aus dem quadratischen Zahlenkörper Q(D).

Jeztz kann man ein Pendant zum Kleinen Fermatschen Satz in QD formulieren.



Satz  

Wenn aAD und p eine ungerade Primzahl, dann
apa(modp),falls(Dp)=+1

oder

apa(modp),falls(Dp)=1.

Beweis  


Falls a(modp) in Ad eine Einheit ist, dann folgt aus dem Satz, dass

ap11(modp),falls(Dp)=1
oder
ap+1aa(modp),falls(Dp)=1.



Lemma  

Die Bedingung ggT(a,p)=1 in AD, ist identisch mit der Bedingung ggT(Q,p)=1 in  N.

Beweis  


Aus Identitäten ergeben sich für Up1 und Up+1 folgende Berechnungen(beachte b=a:

Up1=ap1ap1aaaaaa0(modp),falls(Dp)=1,
Up+1=ap+1ap+1aa11aaa0(modp),falls(Dp)=1.
  1. aa soll wegen Division nicht 0 sein
  2. (aa)2=c2D daraus folgt, dass ggt(c,p)=1 sein muss
  3. Zusammen mit ggT(Q,p)=1 muss die Bedingung ggT(cQ,p)=1 erfüllt sein.




Verhalten Potenzen von a bzw. Un bezüglich der Teilbarkeit durch pn


Falls (Dp)=1 ist ap=a+kp für ein bestimmtes k und deshalb gilt

apn=(ap)pn1=(a+kp)pn1apn1(modpn),
weil alle Terme abseits des ersten apn1 stets den Faktor pn enthalten.

Man kann unter der Bedingung, dass a(modp) in AD eine Einheit ist, durch Division durch apn1 das Folgende erhalten:


{{math|term= a^{p^n} \equiv a^{p^{n-1} } \Rightarrow a^{{p^n}-{p^{n-1}}} \equiv 1 \Rightarrow a^{p^{n-1}(p-1)} \equiv 1 (mod \,\,p^n)\,|SZ=}}


Analog erhält man


apnapn1apnapn1(aa)pn1apn1(p1)(aa)pn+1(modpn).

Mit diesen Identitäten können die folgenden Folgeglieder Ui berechnet werden:

Upn1(p1)0(modpn) für (Dp)=1


Upn1(p+1)0(modpn) für (Dp)=1.


Das lässt sich wie folgt zusammenfassen:


Upn1(p(Dp))0(modpn) für ggT(2QcD,p)=1.

Die Beschränkung ggT(2QcD,p)=1, folgt aus dem Lemma und Bemerkung oben.

Der Lucas-Lehmer-Test ist ein Verfahren, um Mersenne-Primzahlen zu überprüfen. Entwickelt wurde der Test von Eduardo Luca und Derrick Henry Lehmer, der die Arbeiten von Luca fortsetzte. Als mathematische Grundlagen dienen Lucas-Folgen. Häufigste Verwendung findet der Test beim Suchen von sehr großen Primzahlen. Er ist seit Jahren die effizienteste Methode, um die größten zurzeit bekannten Primzahlen zu entdecken, und wird als Standardtestverfahren beim GIMPS-Projekt (Great Internet Mersenne Prime Search) eingesetzt. Zuerst werden wir der Lucas-Lehmer-Test für beliebige Zahl n zeigen und dann für Mersenne-Primzahlen.



Lemma  

Sei ggT(Q,n)=1. Es existiert ein d1, sodaß die Menge G={tUt0modn} und G hat die Form G=d.

Beweis  



Satz (Lucas-Lehmer-Test)  

Sei n+1=j=1rqjβj mit qj paarweise verschiedenen Primzahlen. Sei Ui eine Lucas-Folge mit ggT(2QcD,n)=1 und
ggT(Un1qj,n)=1 für alle j=1,2,...,r.


Ist nun Un+10modn,

so ist n prim.

Beweis  






Lucas-Lehmer-Test für Mersennezahlen



Im Lucas-Lehmer-Test für Mersennezahlen die Schwierigkeit besteht darin, die Primfaktoren von n+1 und

entsprechende Lucas-Folgen zu finden. Die Mersennezahlen Mm=2m1,m1 haben die Eigenschaft,

dass n+1 in diesem Fall eine Potenz von 2 ist und hat nur einen Primfaktor. Deshalb

können wir Lucas-Lehmer-Test für Mersennezahlen so formulieren:


Wenn eine Lucas-Folge Un mit


Un+10(modn)

bei

Un+120(modn)
existiert, dann ist n=Mm=2m1 prim.



Lemma  

Uk und Vk haben höchstens 2Qk als gemeisamen Teiler, sprich ggT(Uk,Vk).

Beweis  


Die Bedingungen Un+10(modn) und Un+120(modn) können zusammengefasst werden.

Es gilt Un+1=Un+12Vn+12, womit Vn+120(modn) sein muss. Durch allgemeine Bedingung ggT(2QcD,p)=1, an Lucas-Folgen für

Primzahltests und Lemma auch klar, dass wenn Vn+12 den Faktor n enthält,

Vn+12≢0(modn) sein muss. Es gegügt demnach Vn+12=V2m10(modn) zu überprüfen.


Es sei V2k:=vk.

Die Berechnung V2k=V2k122Q2k1 dadurch die Form vk=vk122Q2k1.Begonnen wird die Rekursion mit v0=V1=P und die Frage bezüglich der Primalität von

Mm lässt sich wie folgt formulieren: wann ist vm10(modMm)?


Die Werte a=1+3,b=13 ergeben eine passende Lucas-Folge, das führt zu


P=2,Q=2,P24Q=12,D=3,C=2.


Dadurch sieht die Rekursion wie folgt aus: vk=vk12222k1 mit dem Startwert v1=v02+4=8.

Es sei m ungerade, dann ist Mm=2m1 genau dann prim, wenn vm10(modMm), wobei v1=8 und vk=vk12222k1.





Verbesserter Lucas-Lehmer-Test für Mersennezahlen



Satz (Verbesserter Lucas-Lehmer-Test für Mersennezahlen)  

Sei n=2p1 für eine ungerade Primzahl. Die Folge vk sei rekursiv definiert durch v1=4 und vk=vk122. Dann ist n genau dann prim, falls n die Zahl vp1 teilt.

Beweis  



Das Verfahren eignet sich durch seinen iterativen Charakter in der Praxis sehr gut. Sämtliche grossen Mersenne-Primzahlen wurden auf diese Weise gefunden. Lucas selbst hat im Jahre 1876 die Primalität von M127 nachgewiesen und hat gezeigt, dass M67 zerlegbar ist. Schliesslich gelang es Lehmer 1927 zu zeigen, dass M257 zerlegbar ist und korrigierte damit Mersennes Aussage.

Der Lucas-Lehemer Primzahltest für Mersenne-Zahlen erfordert eine immense Rechenleistung, wennp sehr groß ist. Darüber hinaus kommen sehr spezielle Programme zum Einsatz. Eine große Rolle spielt die Multiplikation mit schneller Fourier-Transformation, die 1971 von Schöhage und Strassen entwickelt wurde. Als maßgeblich haben sich die Programme von Crandall und Woltman herausgestellt.



Man zeige, dass n=251=31 prim ist.


Wir berechnen alle vk,k=1,2,3,4 aus:


v1=4,

v2=422=14,

v3=1422=1948(mod31),

v4=822=620(mod31).


Daraus nach verbessertem Lucas-Lehmer-Test für Mersennezahlen folgt, dass die Zahl 31 prim ist.


Man zeige, dass n=2111=2047 nicht prim ist.


Wir berechnen alle vk,k=1,,10 aus:


v1=4,v2=422=14,


v3=1422=1948,v4=19422788(mod2047),


v5=78822701(mod2047),v6=70122119(mod2047),


v7=119221877(mod2047),v8=187722240(mod2047),


v9=24022282(mod2047),v10=282221736(mod2047).


D.h. nv10 und nach verbessertem Lucas-Lehmer-Test für Mersennezahlen folgt, dass die Zahl2047 nicht prim ist. Und tatsächlich 2047=2389.


Literatur