WikiDer > Miller-Rabin-Primzahltest

Miller-Rabin-priemgetaltest

Das Miller-Rabin-Primzahltest oder Rabin-Miller-Primzahltest ist ein Primzahltest: ein Algorithmus das bestimmt, ob eine gegebene Zahl Ahle ist oder nicht. Es ist ähnlich wie die Fermat-Prime-Test und der Solovay-Straßen-Primzahltest, die wie der Miller-Rabin-Primzahltest häufig in der Kryptographie. Die Originalversion dieses Tests wurde erstellt von Gary L. Miller und ist deterministisch. Der deterministische Teil dieses Tests hängt jedoch von den noch nicht bewiesenen Riemann-Hypothese. Michael O. Rabin änderte den Test zu a Wahrscheinlichkeitsrechnung test, der von nichts abhängt und immer funktioniert.

Theorie

Das Prinzip des Miller-Rabin-Primzahltests ist das gleiche wie das des Fermat-Tests und der Solovay-Straßen-Primzahltest: für eine oder mehrere Eigenschaften von Primzahlen wird geprüft, ob die zu testende Zahl diese Eigenschaft oder Eigenschaften besitzt. Wenn nicht, ist die Zahl keine Primzahl. Wenn ja, kann nur geschlossen werden, dass die Zahl möglicherweise (wahrscheinlich) eine Primzahl ist.

Lemma

Das nächste Lemma betrifft Quadrat-Wurzeln der Einheit in dem endlicher Körperz/pz vor dem p eine ungerade Primzahl. Natürlich ergeben 1 und −1 immer 1 wenn sie modularp einbiegen in kariert; Dies sind die trivial QuadratWurzeln von 1 (mod p).

Das Lemma lautet: Es gibt keine nicht trivial Quadratwurzeln von 1 (mod p).

Beweise

Paar

,

als

Das bedeutet, dass ist ein Teiler von oder von . Daraus folgt

So

oder

So

Das Prinzip des Tests

Sie eine Primzahl. Dann ist Sag nur , mit und positive ganze Zahlen und seltsam. Für jedes entweder das

entweder das

für eine gewisse .

weil sie , dann nach Der kleine Satz von Fermat wenn eine Primzahl ist:

Daraus folgt auch:

Durch wiederholtes Auswurzeln nach dem vorherigen Lemma ist das Ergebnis 1 oder -1. Wenn das Ergebnis -1 ist, dann gilt anscheinend die zweite Äquivalenz und der Beweis ist erbracht. Ist das Ergebnis alles mal immer 1, dann bleibt die erste Äquivalenz.

Prüfung

Der Miller-Rabin-Primzahltest basiert auf dem Kontraposition der oben genannten: Wenn es a . gibt gefunden wird, wofür

und

für alle

dann ist ein Zeuge aus der Tatsache, dass zusammengesetzt ist. anders ist sehr wahrscheinlich prim mit Sockel . Ist jedoch zusammengesetzt, heißt dann ein Lügner vor dem .

Für alle ungeraden Verbindungen es gibt viele Zeugen, aber es gibt keinen bekannten einfachen Weg, einen solchen Zeugen zu finden. Die Lösung besteht darin, den Test probabilistisch zu machen: Wählen Sie zufällig einen aus , und sehen Sie, ob es ein Zeuge für die Zusammensetzung von ist . wenn zusammengesetzt ist, werden die meisten Auswahlmöglichkeiten Zeuge des Zusammensetzens und der Test wird es höchstwahrscheinlich entdecken. Es bleibt jedoch eine kleine Chance, dass die Auserwählten ein starker Lügner ist für . Die Wahrscheinlichkeit solcher Fehler kann durch Wiederholung des Tests für mehrere unabhängig ausgewählte .

Beispiel

Angenommen, die Zahl auf Vorrang geprüft. schreiben , So und . Wählen Sie eine , beispielsweise und schau dir die Äquivalenzen an:

So ist für einen für die die gewünschten Äquivalenzen werden nicht erfüllt, so dass 174 nicht bezeugt, dass 221 zusammengesetzt ist. Also ist entweder 221 eine Primzahl oder 174 ist ein Lügner für 221. Wähle einen anderen another , beispielsweise . Schauen Sie sich noch einmal die Äquivalenzen an:

137 ist also ein Zeugnis dafür, dass 221 zusammengesetzt ist und 174 tatsächlich ein Lügner war. Beachten Sie, dass wir nichts über die Faktoren von 221 (nämlich 13 und 17).

Algorithmus

Der Algorithmus kann Pseudocode wie folgt beschrieben werden:

Eingang: nein > 2, eine ungerade ganze Zahl, die auf Primalität getestet wurde; k, eine ganze Zahl, die die Genauigkeit des Tests bestimmtExport: zusammengesetzt wenn nein ist zusammengesetzt, anders wahrscheinlich prim   schreiben nein-1 als 2so·d mit d ungerade mit Potenzen von 2 aus nein−1 Möglichkeit, LOOP zu teilen: wiederholen k mal: wähle 2 ≤ein ≤ nein−2 zufällig X ← eind mod neinX = 1 oder X = nein−1 dann mach die nächste LOOP r = 1,...,so−1         X ← X2 mod neinX = 1 dann Ausgabe zusammengesetztX = nein-1 dann führe die folgende LOOP-Ausgabe aus zusammengesetztAusgabe wahrscheinlich prim

Richtigkeit

Wie gesagt: für die mehr Zahlen ein Wir führen den Test durch, desto genauer ist der Test. Es wurde bewiesen[1] dass für jede ungerade zusammengesetzte Zahl nein, mindestens 3/4 der Basen ein bezeugen, dass nein zusammengesetzt ist. Also wenn nein zusammengesetzt ist, dann erklärt der Miller-Rabin-Primzahltest nein als wahrscheinliche Primzahl mit Wahrscheinlichkeit höchstens 4k. In dieser Hinsicht erhebt sich dieser Test über den Primzahltest von Solovay-Strassen, da er eine zusammengesetzte Zahl als wahrscheinliche Primzahl mit einer Wahrscheinlichkeit von höchstens 2 . deklariertk.

Verweise

Externe Links

  • (und) Arnold, F., Rabin-Miller-Primalitätstest: Zusammengesetzte Zahlen, die ihn bestehen, Mathematik der Berechnungen Vol. 2, No. 64 (1995), Nr. 209, S. 355-361.
  • (und) Hurd, J., Überprüfung des probabilistischen Primzahltests nach Miller-Rabin, The Journal of Logic and Algebraic Programming Vol. 2, No. 56 (2003), p. 3-21.