<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Miller-Rabin-Test</id>
	<title>Miller-Rabin-Test - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Miller-Rabin-Test"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Miller-Rabin-Test&amp;action=history"/>
	<updated>2026-05-19T05:40:45Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Miller-Rabin-Test&amp;diff=131039&amp;oldid=prev</id>
		<title>imported&gt;Horst Gräbner: Änderungen von ~2026-60567-0 (Diskussion) auf die letzte Version von ⵓ zurückgesetzt</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Miller-Rabin-Test&amp;diff=131039&amp;oldid=prev"/>
		<updated>2026-01-28T08:43:41Z</updated>

		<summary type="html">&lt;p&gt;Änderungen von &lt;a href=&quot;/index.php/Spezial:Beitr%C3%A4ge/~2026-60567-0&quot; title=&quot;Spezial:Beiträge/~2026-60567-0&quot;&gt;~2026-60567-0&lt;/a&gt; (&lt;a href=&quot;/index.php?title=Benutzer_Diskussion:~2026-60567-0&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Benutzer Diskussion:~2026-60567-0 (Seite nicht vorhanden)&quot;&gt;Diskussion&lt;/a&gt;) auf die letzte Version von &lt;a href=&quot;/index.php?title=Benutzer:%E2%B5%93&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Benutzer:ⵓ (Seite nicht vorhanden)&quot;&gt;ⵓ&lt;/a&gt; zurückgesetzt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Der &amp;#039;&amp;#039;&amp;#039;Miller-Rabin-Test&amp;#039;&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;&amp;#039;Miller-Selfridge-Rabin-Test&amp;#039;&amp;#039;&amp;#039; (kurz MRT) ist ein [[Randomisierter Algorithmus|probabilistischer]] [[Primzahltest]] und damit ein [[Algorithmus]] aus dem [[Teilgebiete der Mathematik|mathematischen Teilgebiet]] [[Zahlentheorie]], insbesondere der [[Algorithmische Zahlentheorie|algorithmischen Zahlentheorie]].&lt;br /&gt;
&lt;br /&gt;
Der MRT erhält als Eingabe eine [[Parität (Mathematik)|ungerade]] [[natürliche Zahl]] &amp;lt;math&amp;gt;n \ge 5&amp;lt;/math&amp;gt;, von der man wissen will, ob sie prim ist, und eine weitere Zahl &amp;lt;math&amp;gt;a \in \{ 2, 3, 4, \dotsc, n-2 \}&amp;lt;/math&amp;gt; und gibt entweder „zusammengesetzt“ oder „wahrscheinlich prim“ aus. Ist &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; prim, so lautet die Ausgabe immer „wahrscheinlich prim“. Anderenfalls wird in den meisten Fällen „zusammengesetzt“ ausgegeben, aber für manche Paare &amp;lt;math&amp;gt;n,a&amp;lt;/math&amp;gt; mit [[Zusammengesetzte Zahl|zusammengesetztem]] &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ist die Ausgabe trotzdem „wahrscheinlich prim“.&lt;br /&gt;
&lt;br /&gt;
Oft wird &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; [[Zufallszahl|zufällig]] gewählt, der MRT zählt in dieser Form zur Klasse der [[Monte-Carlo-Algorithmus|Monte-Carlo-Algorithmen]]. Durch wiederholtes Testen mit verschiedenen &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; kann die Wahrscheinlichkeit eines Irrtums beliebig klein gehalten werden. Es gibt [[#Deterministische Varianten|deterministische Varianten]] des MRT, bei denen durch geeignete Wahl der &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; ein Irrtum ausgeschlossen wird.&lt;br /&gt;
&lt;br /&gt;
Der MRT ist nach [[Gary L. Miller]] und [[Michael O. Rabin]] benannt.&amp;lt;ref&amp;gt;M. O. Rabin: &amp;#039;&amp;#039;Probabilistic algorithms.&amp;#039;&amp;#039; In: J. F. Traub (ed.): &amp;#039;&amp;#039;Algorithms and complexity.&amp;#039;&amp;#039; Academic Press 1976, S. 21–39, speziell S. 35/36, zum Teil nach Ideen von Miller&amp;lt;/ref&amp;gt; [[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.&amp;lt;ref name=&amp;quot;YAN&amp;quot;&amp;gt;Song Y. Yan: &amp;#039;&amp;#039;Number theory for computing.&amp;#039;&amp;#039; 2. Auflage. Springer, 2002, S. 208–214&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der MRT funktioniert ähnlich wie der [[Solovay-Strassen-Test]], ist diesem allerdings in allen Aspekten überlegen. Er ist schneller, seine Irrtumswahrscheinlichkeit ist geringer, und alle Paare &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt;, für die der Solovay-Strassen-Test die richtige Ausgabe liefert, werden auch vom MRT richtig erkannt.&lt;br /&gt;
&lt;br /&gt;
== Algorithmus ==&lt;br /&gt;
Es sei &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; eine [[ungerade Zahl]], von der festgestellt werden soll, ob sie eine Primzahl ist. Zuerst berechnet man &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; (ungerade) so, dass&lt;br /&gt;
: &amp;lt;math&amp;gt;n - 1 = 2^j\cdot d&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dann wählt man eine Zahl &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; aus der Menge &amp;lt;math&amp;gt;\{ 2, 3, \dotsc, n-2 \}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Der nächste Schritt ist ein Test, den nur Primzahlen und [[starke Pseudoprimzahl]]en (zur Basis &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt;) bestehen: Man prüft, ob entweder&lt;br /&gt;
: &amp;lt;math&amp;gt;a^d \equiv 1 \pmod n&amp;lt;/math&amp;gt;&lt;br /&gt;
oder&lt;br /&gt;
: &amp;lt;math&amp;gt;a^{2^r\cdot d} \equiv -1 \pmod n&amp;lt;/math&amp;gt; &amp;lt;span style=&amp;quot;margin-left:2em;&amp;quot;&amp;gt; für ein &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;0 \le r &amp;lt; j&amp;lt;/math&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
gilt. Für eine Primzahl &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ist dies stets der Fall.&lt;br /&gt;
Wenn die Bedingung nicht erfüllt ist, muss also &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; zusammengesetzt sein. Die Bedingung wird jedoch auch von einigen Zahlenpaaren &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; mit zusammengesetztem &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; erfüllt, so dass der Test die Zusammengesetztheit von &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; mit diesem &amp;lt;math&amp;gt;a &amp;lt;/math&amp;gt; nicht zeigt. Dann heißt &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; eine &amp;#039;&amp;#039;starke Pseudoprimzahl zur Basis &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
Man betrachtet die Folge&lt;br /&gt;
: &amp;lt;math&amp;gt;(a^d, a^{2d}, a^{4d}, \ldots, a^{2^{j-1}d}, a^{2^jd})&amp;lt;/math&amp;gt;,&lt;br /&gt;
In der jedes Element das Quadrat seines Vorgängers ist. Die Elemente werden [[Division mit Rest#Modulo|modulo]] &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; berechnet.&lt;br /&gt;
&lt;br /&gt;
Ist &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; eine Primzahl, dann gilt nach dem [[Kleiner fermatscher Satz|kleinen fermatschen Satz]]&lt;br /&gt;
: &amp;lt;math&amp;gt;a^{2^jd} = a^{n-1} \equiv 1 \pmod n&amp;lt;/math&amp;gt;&lt;br /&gt;
und obige Folge hat deshalb 1 als letztes Element.&lt;br /&gt;
&lt;br /&gt;
Für Primzahlen &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ist der Vorgänger einer 1 in der Folge immer kongruent zu 1 oder zu &amp;amp;minus;1:&lt;br /&gt;
: &amp;lt;math&amp;gt;\begin{align}&lt;br /&gt;
x^2 \equiv 1 \pmod n &amp;amp;\Leftrightarrow x^2 - 1 \equiv 0 \pmod n\\&lt;br /&gt;
 &amp;amp;\Leftrightarrow n | x^2 - 1\\&lt;br /&gt;
 &amp;amp;\Leftrightarrow n | (x - 1)(x + 1)\\&lt;br /&gt;
 &amp;amp;\Leftrightarrow n | (x - 1) \quad \text{oder} \quad n|(x + 1)\\&lt;br /&gt;
 &amp;amp;\Leftrightarrow x - 1 \equiv 0 \pmod n \quad \text{oder} \quad x + 1 \equiv 0 \pmod n\\&lt;br /&gt;
 &amp;amp;\Leftrightarrow x \equiv 1 \pmod n \quad \text{oder} \quad x \equiv -1 \pmod n\\&lt;br /&gt;
\end{align}&amp;lt;/math&amp;gt;&lt;br /&gt;
Die Folge besteht dann also entweder nur aus Einsen, oder sie enthält &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; (was sich bei modulo-n-Rechnung für einen Wert kongruent zu −1 ergibt), worauf wegen &amp;lt;math&amp;gt;(n-1)^2 \equiv 1&amp;lt;/math&amp;gt; Einsen folgen. Wenn die Folge nicht diese Form hat, muss &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; zusammengesetzt sein.&lt;br /&gt;
&lt;br /&gt;
Man prüft, ob die Folge mit 1 beginnt oder ob &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; spätestens als vorletztes Element auftritt. Ist dies der Fall, ist &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; entweder prim oder eine starke Pseudoprimzahl zur Basis &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt;, und es wird „möglicherweise prim“ ausgegeben. Ansonsten kann &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; nicht prim sein, und der Algorithmus gibt „zusammengesetzt“ aus. Man kann die Berechnung abbrechen, wenn &amp;lt;math&amp;gt;0&amp;lt;/math&amp;gt; oder &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt; ohne vorhergehendes &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; auftritt, denn danach kann nur noch &amp;lt;math&amp;gt;0&amp;lt;/math&amp;gt; bzw. &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt; kommen.&lt;br /&gt;
&lt;br /&gt;
== Zuverlässigkeit ==&lt;br /&gt;
Ist &amp;lt;math&amp;gt;n \ge 5&amp;lt;/math&amp;gt; ungerade und nicht prim, so enthält die Menge &amp;lt;math&amp;gt;\{2,3,\ldots,n-2\}&amp;lt;/math&amp;gt; höchstens &amp;lt;math&amp;gt;\tfrac{n-3}{4}&amp;lt;/math&amp;gt; Elemente &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;\operatorname{ggT}(a,n) = 1&amp;lt;/math&amp;gt;, die keine Zeugen für die Zusammengesetztheit von &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; sind. Ist &amp;lt;math&amp;gt;g = \operatorname{ggT}(a,n) &amp;gt; 1&amp;lt;/math&amp;gt;, dann wird immer &amp;lt;math&amp;gt;a^x \equiv kg \pmod n&amp;lt;/math&amp;gt; für ein &amp;lt;math&amp;gt;k \in \mathbb{N}&amp;lt;/math&amp;gt; sein, und &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; wird als zusammengesetzt erkannt.&lt;br /&gt;
&lt;br /&gt;
Ist ein zusammengesetztes ungerades &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; gegeben und wählt man zufällig ein &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; aus &amp;lt;math&amp;gt;\{2,3,\ldots,n-2\}&amp;lt;/math&amp;gt;, dann ist somit die [[Wahrscheinlichkeit]], dass das Ergebnis „wahrscheinlich prim“ lautet, kleiner als &amp;lt;math&amp;gt;\tfrac{1}{4}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Wiederholt man den Test mehrfach für verschiedene voneinander unabhängig gewählte &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; aus dieser Menge, sinkt die Wahrscheinlichkeit weiter ab. Nach &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; Schritten ist die Wahrscheinlichkeit, eine zusammengesetzte Zahl für prim zu halten, kleiner als &amp;lt;math&amp;gt;(\tfrac{1}{4})^s&amp;lt;/math&amp;gt;, also z.&amp;amp;nbsp;B. nach vier Schritten kleiner als 0,4 % und nach zehn Schritten kleiner als &amp;lt;math&amp;gt;10^{-6}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Das ist eine pessimistische Schätzung, die von den „problematischsten“ Werten für &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ausgeht. Für die meisten zusammengesetzten &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ist der Anteil der Basen, die ein falsches Ergebnis liefern, erheblich kleiner als &amp;lt;math&amp;gt;\tfrac{1}{4}&amp;lt;/math&amp;gt;, und für viele ist er sogar 0.&lt;br /&gt;
&lt;br /&gt;
== Deterministische Varianten ==&lt;br /&gt;
Der Miller-Rabin-Algorithmus kann deterministisch angewendet werden, indem alle Basen in einer bestimmten Menge getestet werden (Beispiel: wenn &amp;#039;&amp;#039;n&amp;#039;&amp;#039; &amp;lt; 9.080.191, dann ist es ausreichend &amp;#039;&amp;#039;a&amp;#039;&amp;#039; = 31 und 73 zu testen, siehe unten).&lt;br /&gt;
&lt;br /&gt;
Wenn das getestete &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; zusammengesetzt ist, sind diejenigen zu &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; teilerfremden Zahlen &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt;, die keine Zeugen für die Zusammengesetztheit von n sind, in einer echten [[Untergruppe]] von &amp;lt;math&amp;gt;\left(\mathbb{Z}/n\mathbb{Z}\right)^*&amp;lt;/math&amp;gt; enthalten. Dies bedeutet, dass beim Testen aller &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; aus einer Menge, die &amp;lt;math&amp;gt;\left(\mathbb{Z}/n\mathbb{Z}\right)^*&amp;lt;/math&amp;gt; erzeugt, eines der &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; ein Zeuge für das Zusammengesetztsein von &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; ist. Wenn angenommen wird, dass die [[Riemannsche Vermutung]] wahr ist, dann folgt daraus, dass die Gruppe durch ihre Elemente kleiner O((log&amp;amp;nbsp;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) generiert wird, was bereits im [[Algorithmus von Miller]] angeführt wurde.&amp;lt;ref name=&amp;quot;miller&amp;quot;&amp;gt;Gary L. Miller: &amp;#039;&amp;#039;Riemann’s Hypothesis and Tests for Primality.&amp;#039;&amp;#039; In: &amp;#039;&amp;#039;Journal of Computer and System Sciences&amp;#039;&amp;#039; 13 (1976), no. 3, pp. 300–317.&amp;lt;/ref&amp;gt; Die Konstante in der [[Landau-Symbole|Landau-Notation]] wurde von Eric Bach auf 2 reduziert.&amp;lt;ref&amp;gt;Eric Bach: &amp;#039;&amp;#039;Explicit bounds for primality testing and related problems&amp;#039;&amp;#039;, Mathematics of Computation 55 (1990), no. 191, pp. 355–380.&amp;lt;/ref&amp;gt;&lt;br /&gt;
Deshalb erhält man einen deterministischen Primzahltest, wenn alle &amp;lt;math&amp;gt;a \in \{2,\ldots,\min(n-1,\lfloor 2(\ln n)^2\rfloor)\}&amp;lt;/math&amp;gt; getestet werden. Die Laufzeit dieses Algorithmus ist O((log&amp;amp;nbsp;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;)&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Wenn die Zahl &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; klein ist, ist es nicht notwendig, alle &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; bis &amp;lt;math&amp;gt;2 (\ln n)^2&amp;lt;/math&amp;gt; zu testen, da bekannt ist, dass eine viel kleinere Anzahl ausreichend ist. &lt;br /&gt;
&lt;br /&gt;
Beispielsweise wurde folgendes verifiziert:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;#039;&amp;#039;n&amp;#039;&amp;#039; kleiner als || zu testende &amp;#039;&amp;#039;a&amp;#039;&amp;#039; || Quelle&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 2.047 || 2 || rowspan=&amp;quot;2&amp;quot; | &amp;lt;ref name=&amp;quot;Pomerance80&amp;quot; details=&amp;quot;1023&amp;quot;&amp;gt;{{Literatur&lt;br /&gt;
 | Autor = [[Carl Pomerance]], [[John L. Selfridge]], [[Samuel Wagstaff]]&lt;br /&gt;
 | Titel = The pseudoprimes to 25·10⁹&lt;br /&gt;
 | Sprache = en&lt;br /&gt;
 | Sammelwerk = [[Mathematics of Computation]]&lt;br /&gt;
 | Band = 35&lt;br /&gt;
 | Datum = 1980&lt;br /&gt;
 | Seiten = 1003-1026&lt;br /&gt;
 | DOI = 10.1090/S0025-5718-1980-0572872-7&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 1.373.653 || 2, 3 &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 9.080.191 || 31, 73 || rowspan=&amp;quot;2&amp;quot; |&amp;lt;ref name=&amp;quot;Jaeschke93&amp;quot; details=&amp;quot;926&amp;quot;&amp;gt;{{Literatur&lt;br /&gt;
 | Autor = Gerhard Jaeschke&lt;br /&gt;
 | Titel = On strong pseudoprimes to several bases&lt;br /&gt;
 | Sprache = en&lt;br /&gt;
 | Sammelwerk = [[Mathematics of Computation]]&lt;br /&gt;
 | Band = 61&lt;br /&gt;
 | Datum = 1993&lt;br /&gt;
 | Seiten = 915-926&lt;br /&gt;
 | DOI = 10.2307/2153262&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 4.759.123.141 ||  2, 7, 61 &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 2.152.302.898.747 || 2, 3, 5, 7, 11 || rowspan=&amp;quot;3&amp;quot; | &amp;lt;ref name=&amp;quot;Jaeschke93&amp;quot; details=&amp;quot;916&amp;quot;/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 3.474.749.660.383 || 2, 3, 5, 7, 11, 13  &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 341.550.071.728.321 || 2, 3, 5, 7, 11, 13, 17 &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 3.825.123.056.546.413.051 || 2, 3, 5, 7, 11, 13, 17, 19, 23 || &amp;lt;ref name=&amp;quot;Jiang14&amp;quot;&amp;gt;{{Literatur&lt;br /&gt;
 | Autor = Yupeng Jiang and Yingpu Deng&lt;br /&gt;
 | Titel = Strong pseudoprimes to the first eight prime bases&lt;br /&gt;
 | Sprache = en&lt;br /&gt;
 | Sammelwerk = [[Mathematics of Computation]]&lt;br /&gt;
 | Band = 83&lt;br /&gt;
 | Datum = 2014&lt;br /&gt;
 | Seiten = 2915-2924&lt;br /&gt;
 | DOI = 10.1090/S0025-5718-2014-02830-5&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 318.665.857.834.031.151.167.461 || 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37 || rowspan=&amp;quot;2&amp;quot; | &amp;lt;ref name=&amp;quot;Sorenson17&amp;quot;&amp;gt;{{Literatur&lt;br /&gt;
 | Autor = Jonathan Sorenson, Jonathan Webster&lt;br /&gt;
 | Titel = Strong pseudoprimes to twelve prime bases&lt;br /&gt;
 | Sprache = en&lt;br /&gt;
 | Sammelwerk = [[Mathematics of Computation]]&lt;br /&gt;
 | Band = 86&lt;br /&gt;
 | Datum = 2017&lt;br /&gt;
 | Seiten = 985-1003&lt;br /&gt;
 | DOI = 10.1090/mcom/3134&lt;br /&gt;
 | arXiv = math/1509.00864&lt;br /&gt;
}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 3.317.044.064.679.887.385.961.981 || 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dabei dürfen nur solche &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; getestet werden, die größer sind als das jeweils größte angegebene &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Für das letzte Beispiel ist die Schranke &amp;lt;math&amp;gt;a \le \lfloor 2 \cdot (\ln n)^2 \rfloor = 6325&amp;lt;/math&amp;gt;. Daran ist zu erkennen, wie viel eingespart wird, indem nur die Primzahlen bis 41 verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Siehe auch die Prime Pages,&amp;lt;ref&amp;gt;[https://primes.utm.edu/prove/prove2_3.html Prime Pages] der &amp;#039;&amp;#039;University of Tennessee at Martin&amp;#039;&amp;#039;&amp;lt;/ref&amp;gt; Miller-Rabin SPRP bases records,&amp;lt;ref&amp;gt;[http://miller-rabin.appspot.com/ Miller-Rabin SPRP bases records]&amp;lt;/ref&amp;gt; Zhang/Tang&amp;lt;ref&amp;gt;Zhenxiang Zhang, Min Tang: &amp;#039;&amp;#039;Finding strong pseudoprimes to several bases. II.&amp;#039;&amp;#039; In: &amp;#039;&amp;#039;Math. Comp.&amp;#039;&amp;#039; 72 (2003), S. 2085–2097&amp;lt;/ref&amp;gt; und ebenso die Folge A014233&amp;lt;ref&amp;gt;Die Folge [https://oeis.org/A014233 A014233] in [[OEIS]]&amp;lt;/ref&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
== Implementierung ==&lt;br /&gt;
&lt;br /&gt;
Diese [[C++]]-Implementierung kann alle Zahlen kleiner &amp;lt;math&amp;gt;2^{32}&amp;lt;/math&amp;gt; behandeln:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdint&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using u32 = std::uint32_t;&lt;br /&gt;
using u64 = std::uint64_t;&lt;br /&gt;
&lt;br /&gt;
bool wahrscheinlich_prim(const u32 n, const u32 a)  // n ungerade, 2 &amp;lt;= a &amp;lt;= n-2&lt;br /&gt;
{&lt;br /&gt;
    u32 d = (n-1) / 2, j = 1;&lt;br /&gt;
    while (d % 2 == 0) &lt;br /&gt;
        d /= 2, ++j;&lt;br /&gt;
&lt;br /&gt;
    // berechne p = a^d mod n mit der binären Exponentiation:&lt;br /&gt;
    u64 p = a, q = a;&lt;br /&gt;
    while (d /= 2) {&lt;br /&gt;
        q = q * q % n;&lt;br /&gt;
        if (d % 2) p = p * q % n;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (p == 1 || p == n-1)&lt;br /&gt;
        return true;  // n ist wahrscheinlich prim&lt;br /&gt;
&lt;br /&gt;
    while (--j &amp;gt; 0 &amp;amp;&amp;amp; p &amp;gt; 1) {&lt;br /&gt;
        p = p * p % n;&lt;br /&gt;
        if (p == n-1) return true;&lt;br /&gt;
    }&lt;br /&gt;
    return false;  // n ist nicht prim&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Praktische Relevanz ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* [[Johannes Buchmann]]: &amp;#039;&amp;#039;Einführung in die Kryptographie.&amp;#039;&amp;#039; 2. Auflage. Springer, 2001, S.&amp;amp;nbsp;108–111&lt;br /&gt;
* Karpfinger, Kiechle: &amp;#039;&amp;#039;Kryptologie, Algebraische Methoden und Algorithmen.&amp;#039;&amp;#039; Vieweg+Teubner, 2010, S.&amp;amp;nbsp;147–152, mit vollständigen Beweisen&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{MathWorld |id=Rabin-MillerStrongPseudoprimeTest |title=Miller-Rabin-Test}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Zahlentheoretischer Algorithmus]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Horst Gräbner</name></author>
	</entry>
</feed>