Miller-Rabin-Test
Der Miller-Rabin-Test oder Miller-Selfridge-Rabin-Test ist ein Algorithmus aus dem mathematischen Teilgebiet Zahlentheorie, insbesondere der algorithmischen Zahlentheorie.
Er ist ein probabilistischer Primzahltest, für den es aber deterministische Varianten gibt. Erhält der probabilistische Test eine natürliche Zahl
als Eingabe, so gibt er entweder „
ist keine Primzahl“ oder „
ist wahrscheinlich eine Primzahl“ aus, das Ergebnis ist von
und dem Zufall abhängig. Er zählt zur Klasse der Monte-Carlo-Algorithmen.
Der Miller-Rabin-Test ist nach Gary L. Miller und Michael O. Rabin benannt.[1] John L. Selfridge hat diesen Test schon 1974 verwendet, bevor Rabin ihn 1976 veröffentlichte. Daher rührt der alternative Name Miller-Selfridge-Rabin-Test.[2]
Der Miller-Rabin-Test funktioniert ähnlich wie der Solovay-Strassen-Test, ist diesem allerdings in allen Aspekten überlegen. Er ist schneller, seine Irrtumswahrscheinlichkeit ist geringer und jede Zahl, die der Solovay-Strassen-Test als zusammengesetzt erkennt, weist auch der Miller-Rabin-Test als zusammengesetzte Zahl aus.
Inhaltsverzeichnis |
Algorithmus [Bearbeiten]
Es sei n eine ungerade Zahl, von der festgestellt werden soll, ob sie eine Primzahl ist oder nicht. Zuerst wählt man eine Basis a zufällig aus den Zahlen 2, 3, …, n - 1.
Der nächste Schritt benutzt einen Test, den nur Primzahlen und starke Pseudoprimzahlen (zur Basis a) bestehen. Schreibt man nämlich
mit ungeradem d, so gilt, falls n prim ist:
oder
für ein r mit 0 ≤ r < j. Die Herleitung dieser Kongruenzen ist im nächsten Abschnitt und im Artikel starke Pseudoprimzahl zu finden. Diese Bedingung wird jedoch (zu jeder Basis a) gelegentlich auch von zusammengesetzten Zahlen erfüllt. Diese heißen starke Pseudoprimzahlen zur Basis a.
Funktionsweise [Bearbeiten]
Der Miller-Rabin-Test berechnet modulo
die Folge
mit
. Jedes Element der Folge ist hierbei das Quadrat seines Vorgängers.
Ist
eine Primzahl, dann gilt nach dem kleinen fermatschen Satz
und die vom Miller-Rabin-Test berechnete Folge hat deshalb die Form
Die einzigen Zahlen
mit
sind für eine Primzahl
die Zahlen 1 und -1, wie der folgende Beweis zeigt.
Aus diesem Grund ist der Vorgänger einer 1 in der Folge immer eine 1 oder eine -1. Dies führt dazu, dass für eine Primzahl
die Folge des Miller-Rabin-Tests entweder
oder
ist, wobei die Fragezeichen für beliebige Zahlen stehen.
Ist
eine beliebige Zahl und beginnt die vom Miller-Rabin-Test berechnete Folge nicht mit 1 und enthält auch keine -1, dann kann
keine Primzahl sein. Es gibt allerdings zusammengesetzte Zahlen, bei denen die Folge bei einer Basis a mit 1 beginnt oder eine -1 enthält. Das sind die schon erwähnten starken Pseudoprimzahlen zur Basis a.
Zuverlässigkeit [Bearbeiten]
Ist n ≥ 3 ungerade und nicht prim, so enthält die Menge {2,3,…,n-2} höchstens
Elemente
mit ggT(a,n) = 1, die keine Zeugen für die Zusammengesetztheit von
sind. (Ist ggT(a,n) > 1, oder
für irgendein
, dann wird
natürlich sofort als nicht-prim erkannt).
Ist ein zusammengesetztes ungerades
gegeben und wählt man zufällig ein
aus
, dann ist somit die Wahrscheinlichkeit, dass
damit nicht als zusammengesetzt erkannt wird, kleiner als
. Wiederholt man den Test mehrfach für verschiedene
aus dieser Menge, sinkt die Wahrscheinlichkeit weiter ab. Nach
Schritten ist die Wahrscheinlichkeit, eine zusammengesetzte Zahl für prim zu halten, kleiner als
, also z. B. nach vier Schritten kleiner als 0,4 % und nach zehn Schritten kleiner als
.
Deterministische Varianten [Bearbeiten]
Der Miller–Rabin-Algorithmus kann deterministisch angewendet werden, indem alle Basen in einer bestimmten Menge getestet werden (Beispiel: wenn n < 9.080.191, dann ist es ausreichend a = 31 und 73 zu testen, siehe unten).
Wenn das getestete
zusammengesetzt ist, sind die zu
teilerfremden starken Pseudoprimzahlen
in einer echten Untergruppe von
enthalten. Dies bedeutet, dass beim Testen aller
aus einer Menge, die
erzeugt, eines der
ein Zeuge für das Zusammengesetztsein von
ist. Wenn angenommen wird, dass die Riemannsche Vermutung wahr ist, dann folgt daraus, dass die Gruppe durch ihre Elemente kleiner O((log n)2) generiert wird, was bereits von Miller angeführt wurde.[3] Die Konstante in der Landau-Notation wurde von Eric Bach auf 2 reduziert.[4] Deshalb erhält man einen deterministischen Primzahltest, wenn alle
getestet werden. Die Laufzeit dieses Algorithmus ist O((log n)4).
Wenn die Zahl n klein ist, ist es nicht notwendig, alle a < 2(ln n)2 zu testen, da bekannt ist, dass eine viel kleinere Anzahl ausreichend ist. Beispielsweise haben Pomerance, Selfridge und Wagstaff[5] sowie Jaeschke[6] folgendes verifiziert:
- Wenn n < 1.373.653, ist es ausreichend a = 2 und 3 zu testen,
- wenn n < 9.080.191, ist es ausreichend a = 31 und 73 zu testen,
- wenn n < 4.759.123.141, ist es ausreichend a = 2, 7, und 61 zu testen,
- wenn n < 2.152.302.898.747, ist es ausreichend a = 2, 3, 5, 7, und 11 zu testen,
- wenn n < 3.474.749.660.383, ist es ausreichend a = 2, 3, 5, 7, 11, und 13 zu testen,
- wenn n < 341.550.071.728.321, ist es ausreichend a = 2, 3, 5, 7, 11, 13, und 17 zu testen.[7]
Siehe auch die Prime Pages[8], Miller-Rabin SPRP bases records[9], Zhang/Tang[10] und ebenso die Folge A014233[11] in OEIS zu anderen Kriterien ähnlicher Art. Auf diese Weise hat man sehr schnelle deterministische Primzahltests für Zahlen im geeigneten Bereich, ohne auf unbewiesene Annahmen zurückgreifen zu müssen.
Praktische Relevanz [Bearbeiten]
Primzahltests werden vor allem in der Kryptographie benötigt. Ein typisches Beispiel ist die Schlüsselerstellung für das RSA-Kryptosystem, hierfür werden mehrere große Primzahlen benötigt. Zwar wurde im Jahr 2002 mit dem AKS-Primzahltest erstmals ein beweisbar deterministischer, in polynomialer Zeit laufender Primzahltest vorgestellt. Dessen Laufzeit ist jedoch für praktische Anwendungen meist zu hoch, weswegen für Kryptographie-Software meist immer noch der Miller-Rabin-Test eingesetzt wird. Dabei ist es zwar theoretisch möglich, dass eine zusammengesetzte Zahl als Primzahl genutzt wird, die Wahrscheinlichkeit ist jedoch so gering, dass es in der Praxis keine Rolle spielt.
Einzelnachweise [Bearbeiten]
- ↑ M. O. Rabin: Probabilistic algorithms. In: J. F. Traub (ed.): Algorithms and complexity. Academic Press 1976, S. 21–39, speziell S. 35/36, zum Teil nach Ideen von Miller
- ↑ Song Y. Yan: Number theory for computing. 2. Auflage. Springer, 2002, S. 208–214
- ↑ Gary L. Miller, Riemann's Hypothesis and Tests for Primality, Journal of Computer and System Sciences 13 (1976), no. 3, pp. 300–317.
- ↑ Eric Bach, Explicit bounds for primality testing and related problems, Mathematics of Computation 55 (1990), no. 191, pp. 355–380.
- ↑ C. Pomerance, J. L. Selfridge, S. S. Wagstaff, Jr.: The pseudoprimes to 25·109, Math. Comp., 35 (1980) no. 151, S. 1003–1026.
- ↑ Gerhard Jaeschke: On strong pseudoprimes to several bases, Math. Comp. 61 (1993), no. 204, S. 915–926.
- ↑ Nur solche n dürfen getestet werden, die größer sind als das jeweils größte angegeben a. Für das letzte Beispiel ist die Schranke 2(ln n)2 = 2239. Daran erkennt man, wie viel man durch die Verwendung der Primzahlen bis 17 einspart.
- ↑ Prime Pages der University of Tennessee at Martin
- ↑ Miller-Rabin SPRP bases records
- ↑ Zhenxiang Zhang, Min Tang, "Finding strong pseudoprimes to several bases. II", Math. Comp. 72 (2003), S. 2085–2097
- ↑ Die Folge A014233 in OEIS
Literatur [Bearbeiten]
- Johannes Buchmann: Einführung in die Kryptographie. 2. Auflage. Springer, 2001, S. 108–111
Weblinks [Bearbeiten]
- Eric W. Weisstein: Miller-Rabin-Test. In: MathWorld. (englisch)







