5 randomisierte algorithmen für probleme aus der zahlentheorie · stand: 29.12.2012 orlesungv...

44
(*) x Z m 2 r 0 r<m q x = qm + r q r r x mod m x - qm x m y x y x x = qy q y | x 0 | x x =0 y y | 0 x 1 | x -1 | x m 2 m | x x mod m =0 (*) m 2 Z m = {0, 1,...,m - 1} m m 1 + mod m · mod m Z m a -a -a = m - a 0 <a<m -0=0 1 m 2 Z Z m x 7x mod m x, y Z (x + y) mod m = ((x mod m)+(y mod m)) mod m

Upload: phungtuyen

Post on 17-Aug-2019

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

Stand: 29.12.2012 Vorlesung Randomisierte Algorithmen Dietzfelbinger

5 Randomisierte Algorithmen für Probleme aus der

Zahlentheorie

Zu Aussagen, die mit (∗) markiert sind, gibt es Beweise oder Anmerkungen im An-hang A.

5.1 Fakten aus der Zahlentheorie und grundlegende Algorith-

men

Fakt 5.1 (Division mit Rest). Zu x ∈ Z und m ≥ 2 gibt es ein r mit 0 ≤ r < m und

ein q mit x = qm+ r. Die Zahlen q und r sind eindeutig bestimmt.

Die Zahl r (Rest) bezeichnen wir mit x mod m. Sie hat die Darstellung x − qm,unterscheidet sich also von x um ein Vielfaches von m.

Wir sagen, dass eine ganze Zahl y die ganze Zahl x teilt (oder dass y ein Teiler von

x ist), wenn x = qy für eine ganze Zahl q gilt. Oft schreibt man dafür kurz y | x.(Beobachtungen: Aus 0 | x folgt x = 0; für jede ganze Zahl y gilt: y | 0; für jedeganze Zahl x gilt: 1 | x und −1 | x. Wenn m ≥ 2 ist, ist m | x gleichbedeutend mitx mod m = 0.)

Fakt 5.2 ((∗)). Für jedes m ≥ 2 bildet die Menge Zm = 0, 1, . . . ,m − 1 mit denOperationen Addition modulo m und Multiplikation modulo m einen Ring mit 1.

Das heiÿt im Detail: Die Operationen + (mod m) und · (mod m) führen nicht aus demBereich Zm heraus. Die Addition erfüllt alle Rechenregeln für Gruppen. Insbesonderehat jedes Element a ein additives Inverses −a (beachte −a = m − a für 0 < a < mund −0 = 0). Die Multiplikation hat die 1 als neutrales Element und ist assoziativ;für Addition und Multiplikation gelten die Distributivgesetze. (Für weitere Detailssiehe Bemerkung A.1.)

Lemma 5.3. Für jedes m ≥ 2 ist die Abbildung Z → Zm, x 7→ x mod m, einHomomorphismus ; d. h. für x, y ∈ Z gilt :

(i) (x+ y) mod m = ((x mod m) + (y mod m)) mod m,

1

Page 2: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

(ii) (xy) mod m = ((x mod m)(y mod m)) mod m.

Dieses Lemma wird hauptsächlich benutzt, um Rechnungen zu vereinfachen. Umeinen arithmetischen Ausdruck auszuwerten (inklusive Potenzen), kann man auf be-liebige Zwischenergebnisse die mod m-Operation anwenden.

Beispiel : Um 137 mod 11 zu berechnen, rechnet man

(13 mod 11)7 mod 11 = (25 mod 11) · 4 mod 11 = (−1) · 4 mod 11 = 7.

Fakt 5.4. Für jedes m ≥ 2 gilt :x mod m = y mod m genau dann wenn x− y durch m teilbar ist.

Beispiel : 29 mod 12 = 53 mod 12 = 5 und 53− 29 = 24 ist durch 12 teilbar.

Denition 5.5. (a) Für m,n ∈ Z, nicht beide gleich 0, sei ggt(m,n) die gröÿte

positive Zahl, die sowohl m als auch n teilt.

(b) m,n ∈ Z, nicht beide gleich 0, heiÿen teilerfremd, wenn ggt(m,n) = 1 gilt,

d. h. wenn keine Zahl > 1 beide teilt.

Es gibt einen ezienten Algorithmus zur Ermittlung des gröÿten gemeinsamen Tei-lers. Er beruht auf den Gleichungen

ggt(a, 0) = a für a > 0 und

ggt(a, b) = ggt(b, a mod b) für a ≥ b > 0,

die in ein iteratives Verfahren umgesetzt werden.

Algorithmus 5.1 (Euklidischer Algorithmus).Input: Zwei ganze Zahlen m und n.Methode:

1 a, b: integer;2 if |m| ≥ |n|3 then a← |m|; b← |n|;4 else a← |n|; b← |m|;5 while b > 0 repeat6 (a, b)← (b, a mod b);7 return a.

2

Page 3: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

i ai bi

0 12742 10534

1 10534 2208

2 2208 1702

3 1702 506

4 506 184

5 184 138

6 138 46

7 46 0

Tabelle 1: Ablauf des Euklidischen Algorithmus auf einem Beispiel

Zeilen 24 dienen nur dazu, die Normalsituation a ≥ b ≥ 0 herzustellen. Die eigent-liche Rechnung ndet in der while-Schleife statt.

Fakt 5.6. Algorithmus 5.1 gibt ggt(m,n) > 0 aus, wenn m,n nicht beide 0 sind ;wenn m = n = 0, ist die Ausgabe 0.

Auf Eingabem = 10534, n = 12742 ergibt sich der in Tab. 5.1 angegebene Ablauf. DieZahlen ai und bi bezeichnen den Inhalt der Variablen a und b, nachdem die Schleifein Zeilen 56 i-mal ausgeführt worden ist. Die Ausgabe ist 46 = ggt(10534, 12742).

Um einzusehen, dass der Algorithmus terminiert, ja sogar sehr schnell terminiert,bemerken wir Folgendes. Betrachte den Beginn eines Schleifendurchlaufs. Der Inhaltvon a sei a, der Inhalt von b sei b, mit a ≥ b > 0. Nach einem Schleifendurchlaufenthält a den Wert a′ = b und b den Wert b′ = a mod b. Falls b′ = 0, endet derAlgorithmus. Sonst wird noch ein Durchlauf ausgeführt, an dessen Ende a den Wertb′ = a mod b enthält. Wir behaupten: b′ < 1

2a. Um dies zu beweisen, betrachten wir

zwei Fälle: Wenn b > 12a ist, gilt b′ = a mod b = a − b < 1

2a. Wenn b ≤ 1

2a ist, gilt

b′ = a mod b < b ≤ 12a. Also halbiert sich der Wert in a in jeweils zwei Durchläufen.

Nach dem ersten Schleifendurchlauf enthält a den Wert min|m|, |n|. Daraus ergibtsich Teil (a) der folgenden Aussage.

Fakt 5.7. (a) Die Schleife in Zeilen 56 wird höchstens O(log(min|m|, |n|))-malausgeführt.

(b) Die gesamte Anzahl von Bitoperationen für den Euklidischen Algorithmus ist

O(log(|m|) log(|n|)).

3

Page 4: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

Man beachte, dass dlog(n+ 1)e ≈ log n die Anzahl der Bits ist, die man braucht, umn aufzuschreiben. Damit hat der Euklidische Algorithmus bis auf einen konstantenFaktor denselben Aufwand wie die Multiplikation von m und n, wenn man die Schul-methode benutzt. (Es sei bemerkt, dass der Beweis der Schranke in (b) einer kleinenRechnung bedarf, die die Längen der beteiligten Zahlen genauer verfolgt.)

Beispiel : (a) 21 und 25 sind teilerfremd. Es gilt 31 · 21 + (−26) · 25 = 651− 650 = 1.(b) Es gilt ggt(21, 35) = 7, und 2 · 35− 3 · 21 = 7.

Die folgende sehr nützliche Aussage verallgemeinert diese Beobachtung:

Lemma 5.8 ((∗) . . . von Bezout).(a) Wenn m,n teilerfremd sind, gibt es x, y mit xm+ yn = 1.(b) Für m,n ∈ Z, nicht beide gleich 0, gibt es x, y ∈ Z mit xm+ yn = ggt(m,n).

Die Koezienten x, y aus dem Lemma von Bezout kann man mit einer Erweiterungdes Euklidischen Algorithmus sehr ezient berechnen.Algorithmus 5.2 (Erweiterter Euklidischer Algorithmus).

Eingabe: Ganze Zahlen m und n.Methode:

0 a, b, xa, ya, xb, yb, q: integer;1 if |m| ≥ |n|2 then a ← |m|; b ← |n|;3 xa ← sign(m); ya ← 0; xb ← 0; yb ← sign(n);4 else a ← |n|; b ← |m|;5 xa ← 0; ya ← sign(n); xb ← sign(m); yb ← 0;6 while b > 0 repeat7 q ← a div b;8 (a, b)← (b, a− q · b);9 (xa, ya, xb, yb)← (xb, yb, xa− q · xb, ya− q · yb);10 return (a, xa, ya);

Im Algorithmus benutzen wir die Signumfunktion, die wie folgt deniert ist:

sign(n) =

1 , falls n > 0,0 , falls n = 0,−1 , falls n < 0,

(1)

die alson = sign(n) · |n| für alle n (2)

4

Page 5: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

erfüllt.

Genau wie im ursprünglichen Euklidischen Algorithmus ndet die eigentliche Arbeitin der while-Schleife statt (4 Zeilen). Zeilen 15 dienen nur der Vorbereitung unddem Umarrangieren, wenn die Eingabe negative Zahlen enthält oder |m| < |n| ist.Die Idee hinter dem Algorithmus ist folgende. Für die Diskussion beschränken wiruns auf den Fall m ≥ n ≥ 0. Der Euklidische Algorithmus führt in den Variablen a

und b Zahlen a und b mit, die stets ggt(a, b) = d = ggt(m,n) erfüllen. Die Variablenxa, ya, xb und yb enthalten immer Zahlenpaare (xa, ya) und (xb, yb), die folgendeGleichungen erfüllen:

a = xa ·m+ ya · n,b = xb ·m+ yb · n.

Dies wird durch die Initialisierung hergestellt (a = m, b = n, xa = 1, ya = 0,xb = 0, yb = 1). In einem Schleifendurchlauf wird a durch b ersetzt und (xa, ya) durch(xb, yb), und es wird b durch a−q · b ersetzt sowie (xb, yb) durch (xa−q ·xa, ya−q ·yb).Dadurch bleiben die Gleichungen gültig. Wenn schlieÿlich b = 0 geworden ist, giltd = ggt(m,n) = a = xa ·m+ ya · n, was die Ausgabe erklärt.Als Beispiel betrachten wir den Ablauf des Algorithmus auf der Eingabe (m,n) =(10534, 12742). Die Zahlen ai ,bi, xa,i, ya,i, xb,i, yb,i bezeichnen den Inhalt von a, b,xa, ya, xb, yb nach dem i-ten Schleifendurchlauf.

i ai bi xa,i ya,i xb,i yb,i qi

0 12742 10534 0 1 1 0

1 10534 2208 1 0 −1 1 1

2 2208 1702 −1 1 5 −4 4

3 1702 506 5 −4 −6 5 1

4 506 184 −6 5 23 −19 3

5 184 138 23 −19 −52 43 2

6 138 46 −52 43 75 −62 1

7 46 0 75 −62 −277 229 3

Die Ausgabe ist (46, 75,−62). Man überprüft leicht, dass

46 = ggt(10534, 12742) = 75 · 10534− 62 · 12742

gilt. Allgemein gilt:

5

Page 6: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

Fakt 5.9. (a) Wenn Algorithmus 5.2 auf Eingabe m,n, die nicht beide 0 sind, die

Ausgabe (d, x, y) liefert, dann gilt d = ggt(m,n) = xm+ yn.

(b) Die Anzahl der Schleifendurchläufe ist dieselbe wie beim gewöhnlichen Euklidi-

schen Algorithmus.

(c) Die Anzahl von Bitoperationen für Algorithmus 5.2 ist O(log(|m|) log(|n|)).

In jeder Struktur Zm spielen die Elemente, die ein multiplikatives Inverses haben,eine spezielle Rolle; sie erhalten eine spezielle Bezeichnung.

Lemma 5.10 ((∗)). Für jedes m ≥ 2 und jedes a ∈ Z gilt :Es gibt ein b mit ab mod m = 1 genau dann wenn ggt(a,m) = 1.

Beispiel : Aus 31 · 21 + (−26) · 25 = 1 folgt, dass 31 mod 25 = 6 ein multiplikativesInverses zu 21 modulo 25 ist.

Denition 5.11. Für m ≥ 2 sei Z∗m := a ∈ Zm | ggt(a,m) = 1.

Fakt 5.12 ((∗)). Für jedes m ≥ 2 gilt :Z∗m mit der Multiplikation modulo m als Operation ist eine Gruppe.

Beispiel : Z∗21 = 1, 2, 4, 5, 8, 10, 11, 13, 16, 17, 19, 20 und Z∗7 = 1, 2, 3, 4, 5, 6.Am schönsten ist die Situation, wenn alle Zahlen < m in Z∗m liegen.

Proposition 5.13 ((∗)). Für jedes m ≥ 2 gilt :m ist Primzahl ⇔ Z∗m = 1, . . . ,m− 1 ⇔ Zm ist ein Körper.

Die zweite Äquivalenz ist dabei klar: Der Ring Zm ist nach Denition ein Körpergenau dann wenn jedes Element von Zm − 0 ein multiplikatives Inverses besitzt.

Beispiel : Wir rechnen modulo 13 und geben für jedes a ∈ Z∗13 das Inverse b sowie dasProdukt a · b an (das natürlich bei der Division durch 13 Rest 1 lassen muss).

a 1 2 3 4 5 6 7 8 9 10 11 12b 1 7 9 10 8 11 2 5 3 4 6 12a · b 1 14 27 40 40 66 14 40 27 40 66 144

14 ist keine Primzahl, und es gibt keine Zahl b mit 2 · b mod 14 = 1; das heiÿt, dass2 /∈ Z∗14 und daher, dass Z14 kein Körper ist.

6

Page 7: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

Fakt 5.14 (Kleiner Satz von Fermat). Wenn m eine Primzahl ist, dann gilt :

am−1 mod m = 1, für jedes a ∈ Z∗m.

Beweis : Betrachte die Abbildung

ga : Z∗m 3 x 7→ ax mod m ∈ Z∗m.

Diese Abbildung ist injektiv, da für das zu a inverse Element b gilt: b ·ga(x) mod m =bax mod m = x. Also:

1, . . . ,m− 1 = ga(1), . . . , ga(m− 1).

Wir multiplizieren:

1 · . . . · (m−1) mod m = ga(1) · . . . ·ga(m−1) mod m = am−1 · (1 · . . . · (m−1)) mod m.

Wenn wir beide Seiten mit dem multiplikativen Inversen von 1 · . . . · (m− 1) mod mmultiplizieren, erhalten wir 1 = am−1 mod m.

Wir bemerken, dass auch die Umkehrung gilt: Wenn am−1 mod m = 1 ist, d. h. am−1−qm = 1 für ein q, dann folgt ggt(a,m) = 1. Wenn also a ∈ (Zm − 0) − Z∗m, danngilt auf jeden Fall am−1 mod m 6= 1.

Ab hier soll p immer eine Primzahl bezeichnen. Normalerweise ist dabei p > 2, alsop ungerade.1

Wir notieren noch wesentliche Eigenschaften von teilerfremden Zahlen.

Fakt 5.15 ((∗)). Wenn m und n teilerfremd sind, und sowohl m als auch n ist Teiler

von a, dann ist mn Teiler von a.

Sehr grundlegend ist folgende Aussage über teilerfremde Zahlenpaare (m,n), die imwesentlichen sagt, dass die Strukturen Zm×Zn (mit komponentenweisen Operationen)und Zmn isomorph sind.

Wir beginnen mit einem Beispiel, nämlich m = 3, n = 8, also mn = 24. Die folgendeTabelle gibt die Reste der Zahlen a ∈ 0, 1, . . . , 23 modulo 3 und modulo 8 an. DieReste wiederholen sich zyklisch für andere a ∈ Z.

1All primes are odd except 2, which is the oddest of all. (D. E.Knuth)

7

Page 8: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

a 0 1 2 3 4 5 6 7 8 9 10 11

a mod 3 0 1 2 0 1 2 0 1 2 0 1 2

a mod 8 0 1 2 3 4 5 6 7 0 1 2 3

a 12 13 14 15 16 17 18 19 20 21 22 23

a mod 3 0 1 2 0 1 2 0 1 2 0 1 2

a mod 8 4 5 6 7 0 1 2 3 4 5 6 7

Wenn wir die Einträge in Zeilen 2 und 3 als 24 Paare in Z3×Z8 ansehen, erkennen wir,dass sie alle verschieden sind, also auch alle Möglichkeiten in 0, 1, 2 × 0, 1, . . . , 7abdecken. D. h.: Die Abbildung a 7→ (a mod 3, a mod 8) ist eine Bijektion zwischenZ24 und Z3 ×Z8. Zudem spiegeln sich arithmetische Operationen auf den Elementenvon Z24 wieder in den Resten modulo 3 und 8. Beispielsweise liefert die Addition von(2, 7) und (2, 1) das Resultat (1, 0), das der Addition von 23 und 17 mit dem Resultat40 = 16 mod 24 entspricht. Genauso ist

(25 mod 3, 35 mod 8) = (2, 3),

was der Beobachtung 115 mod 24 = 11 entspricht.

Der Chinesische Restsatz sagt im wesentlichen, dass eine solche strukturelle Entspre-chung zwischen den Resten modulo mn und Paaren von Resten modulo m, n immergilt, wenn m und n teilerfremd sind.

Fakt 5.16 (Chinesischer Restsatz). m und n seien teilerfremd. Dann ist die Abbil-

dung

Φ: Zmn 3 x 7→ (x mod m,x mod n) ∈ Zm × Znbijektiv. Weiterhin: Wenn Φ(x) = (x1, x2) und Φ(y) = (y1, y2), dann gilt :

(a) Φ(x+mn y) = (x1 +m y1, x2 +n y2);

(b) Φ(x ·mn y) = (x1 ·m y1, x2 ·n y2);

(c) Φ(xk mod (mn)) = ((x1)k mod m, (x2)

k mod n), für k ≥ 0.

(Dabei bezeichnen +j und ·j die Addition und die Multiplikation modulo j.)

8

Page 9: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

Oft kommt es darauf an, Potenzen an mod m zu berechnen. Dabei kann n eine sehrgroÿe Zahl sein.

31384788374932954500363985493554603584759389 mod 28374618732464817362847326847331872341234

Wieso kann ein Computer das Ergebnis (18019019948605604024937414441328931495971)in Bruchteilen von Sekunden berechnen? Auf keinen Fall kann er n Multiplikationendurchführen. Es gibt eine recht einfache rekursive Formel, die den Weg zu einer e-zienten Berechnung weist:

an mod m =

1 , wenn n = 0,a , wenn n = 1,((an/2 mod m)2) mod m , wenn n ≥ 2 gerade ist,(a · (a(n−1)/2 mod m)2) mod m , wenn n ≥ 2 ungerade ist.

Man erkennt sofort, dass in jeder Rekursionsebene die Bitanzahl des Exponentenum 1 sinkt, dass also die Anzahl der Rekursionsebenen etwa log n beträgt. In je-der Rekursionsstufe ist eine oder sind zwei Multiplikationen modulo m auszufüh-ren, was O((logm)2) Bitoperationen erfordert (Schulmethode). Damit kommt manbei der schnellen Exponentiation selbst bei der einfachsten Implementierung mitO((log n)(logm)2) Bitoperationen zum Ergebnis. Wenn man diesen Algorithmusaus Ezienzgründen iterativ formulieren möchte, benötigt man die Binärdarstellungbk . . . b1b0 von n in der Reihenfolge von links nach rechts. Diese Darstellung ist norma-lerweise durch die interne Darstellung gegeben. Alternativ kann man die Binärziernvon n durch iterierte Division in der Reihenfolge b0, b1, . . . , bk ermitteln. In Runde ibenötigt man dann die Potenz a2

imod m als Faktor. Diesen kann man einfach durch

iteriertes Quadrieren ermitteln, mit der Formel a2i

mod m = (a2i−1

mod m)2 mod m.Dies führt zu folgendem Verfahren, das ebenfalls O((logm)2) Bitoperationen erfor-dert.

9

Page 10: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

Algorithmus 5.3 (Schnelle modulare Exponentiation).

Eingabe: Ganze Zahlen a, n ≥ 0, and m ≥ 1.Methode:

0 u, s, c: integer;1 u← n;2 s← a mod m;3 c← 1;4 while u ≥ 1 repeat5 if u ungerade then c← (c · s) mod m;6 s← s · s mod m;7 u← u div 2;8 return c;

Hier ein Beispiel für den Ablauf: Dabei ist a = 2, n = 4321 Binärdarstellung bk . . . b0 =1000011100001), m = 101.

i si bi ci

0 21 = 2 1 2

1 22 = 4 0 2

2 42 = 16 0 2

3 162 mod 101 = 54 0 2

4 542 mod 101 = 88 0 2

5 882 mod 101 = 68 1 2 · 68 mod 101 = 35

6 682 mod 101 = 79 1 35 · 79 mod 101 = 38

7 792 mod 101 = 80 1 38 · 80 mod 101 = 10

8 802 mod 101 = 37 0 10

9 372 mod 101 = 56 0 10

10 562 mod 101 = 5 0 10

11 52 mod 101 = 25 0 10

12 252 mod 101 = 19 1 10 · 19 mod 101 = 89

Zeile 2 wird s mit a mod m = a20

mod m initialisiert, und u mit n. Die Binärdar-stellung von n soll bk . . . b1b0 sein, mit bk = 1. In jedem Schleifendurchlauf wird u inZeile 7 halbiert; wenn also Zeile 5 zum (i + 1)-sten Mal ausgeführt wird, enthält u

10

Page 11: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

die Zahl mit Binärdarstellung bkbk−1 . . . bi. In Zeile 6 jedes Durchlaufs wird der Inhaltvon s quadriert (modulo m); wenn also Zeile 5 zum (i+ 1)-sten Mal ausgeführt wird,enthält s die Zahl si = a2

imod m. Das letzte Bit bi von u wird in Zeile 5 benutzt,

um zu entscheiden, ob p mit si multipliziert werden soll oder nicht. Mit vollständigerInduktion zeigt man, dass nach der i-ten Ausführung von Zeile 5 die Variable p dieZahl

∏0≤j≤i, bj=1 a

2j mod m enthält. Die Abarbeitung der Schleife hält, wenn u 0 ge-worden ist, was oenbar nach genau k + 1 Durchläufen der Fall ist. An dieser Stelleenthält p das gewünschte Ergebnis

∏0≤j≤k, bj=1 a

2j mod m = an mod n.

Lemma 5.17. Die Berechnung von an mod m benötigt O(log n) Multiplikationen und

Divisionen modulo m von Zahlen aus 0, . . . ,m2 − 1 sowie O((log n)(logm)2) Bit-

operationen.

Bemerkung: Man kann denselben Algorithmus in einem beliebigen Monoid (Berei-che mit einer assoziativen Operation und einem neutralen Element) benutzen. EinenMonoid bilden zum Beispiel die natürlichen Zahlen mit der Multiplikation oder dieMenge Σ∗ über einem Alphabet Σ mit der Konkatenation. In Abschnitt 5.2 benutzenwir die schnelle Exponentiation für einen etwas ungewöhnlichen Monoid.

5.2 Quadratische Reste und Quadratwurzeln modulo p

Wir betrachten hier den Begri des quadratischen Rests und der Quadratwurzelnmodulo p, für Primzahlen p.

Beispiel : Für p = 13 und p = 19 betrachten wir die Quadrate der Zahlen in Z∗p .

a 1 2 3 4 5 6 7 8 9 10 11 12

a2 1 4 9 16 25 36 49 64 81 100 121 144

a2 mod 13 1 4 9 3 12 10 10 12 3 9 4 1

a 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

a2 mod 19 1 4 9 16 6 17 11 7 5 5 7 11 17 6 16 9 4 1

Wir bemerken, dass in beiden Fällen jede Zahl entweder keinmal oder zweimal alsQuadrat vorkommt, dass infolgedessen genau 1

2(p−1) Zahlen in Z∗p als Quadratzahlen

auftauchen. Im Fall p = 13 ist 12 = −1 mod 13 eine Quadratzahl, im Fall p = 19 ist18 = −1 mod 19 keine Quadratzahl. Es stellt sich die Frage, wie man zu gegebenem

11

Page 12: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

p und a ermitteln kann, ob a in Zp ein Quadrat ist (einfach, wenn man weiÿ, wie esgeht) und wie man gegebenenfalls ein c mit c2 mod p = a nden kann (eventuell nichtganz so einfach).

Bemerkung: In Zp spielt p− 1 die Rolle von −1, dem additiven Inversen von 1.

Denition 5.18. Für eine ungerade Primzahl p sei

QRp := a ∈ Z∗p | ∃b ∈ Z∗p : b2 mod p = a

die Menge der quadratischen Reste in Z∗p .

Wir stellen einige auch für sich wichtige Hilfsaussagen bereit.

Fakt 5.19. Wenn p eine ungerade Primzahl ist und s ≥ 2, dann gilt:

(a) Wenn d ≥ 1 ist, dann hat ein Polynom f(X) = Xd+ad−1Xd−1 + · · ·+a1X+a0

in Zp höchstens d Nullstellen.

(b) Für s ≥ 1 gibt es in Z∗p höchstens s Elemente b mit bs mod p = 1.

Beweis : (a) Dies ist eine Tatsache, die in Körpern allgemein gilt. Man kann sichrecht leicht überlegen, dass man für Nullstellen b1, . . . , bk aus f(X) den Faktor (X −b1) · · · (X−bk) ausklammern kann, d. h. f(X) = (X−b1) · · · (X−bk) ·g(X) schreibenkann. Dann kann k nicht gröÿer als der Grad d von f(X) sein.(b) Wenn b1, . . . , bs+1 verschiedene Lösungen wären, hätte das Polynom Xs− 1 Grads, aber > s Nullstellen, was (a) widerspricht.

Lemma 5.20. Wenn p eine ungerade Primzahl ist, dann gilt b2 mod p = 1, b ∈ Zpgenau für b ∈ 1,−1 = 1, p− 1.

Beweis : Oensichtlich gilt für jedes beliebige m ≥ 2, dass 12 mod m = 1 und (m −1)2 mod m = (m(m + 2) + 1) mod m = 1 ist. Nach Fakt 5.19(b) kann das PolynomX2 − 1 nicht mehr als diese beiden Nullstellen haben.

Allgemeiner gilt:

Lemma 5.21. Wenn p eine ungerade Primzahl ist und a ∈ QRp, dann gibt es genau

zwei Zahlen b ∈ Zp mit b2 mod p = a.

Folgerung: |QRp| = 12(p− 1).

12

Page 13: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

Beweis : Nach Denition von QRp gibt es ein solches b. Dann gilt auch (−b)2 mod p =b2 mod p = a. Weil p ungerade ist, gilt b− (−b) mod p = 2b mod p 6= 0, also b 6= −b.Nach Fakt 5.19 kann das Polynom X2 − a nicht mehr als diese beiden Nullstellenhaben.

Die folgende Behauptung erlaubt es zu testen, ob a ein quadratischer Rest ist.

Proposition 5.22 ((∗) Eulersches Kriterium). Für jede ungerade Primzahl p und

jedes a ∈ Z∗p gilt :

(a) a(p−1)/2 mod p ∈ 1,−1.

(b) a ∈ QRp ⇔ a(p−1)/2 mod p = 1.

(Beweis in Anhang A.) Mit diesem Kriterium kann man mit einer schnellen Expo-nentiation testen, ob eine Zahl a quadratischer Rest modulo p ist oder nicht.

Algorithmus 5.4 (Quadratzahltest).Input: Primzahl p, Zahl a mit 1 < a < pMethode:

(1) Berechne z = a(p−1)/2 mod p;(∗ Schnelle Exponentiation ∗)

(2) if z = 1 then return Quadrat else return Nichtquadrat.

Wir rechnen versuchsweise in Z19, für 18 /∈ QR19 und 17 ∈ QR19:

189 mod 19 = (((−1)8 mod 19) · 18) mod 19 = 18 6= 1;

179 mod 19 = (((−2)8 mod 19) · (−2)) mod 19 = (256 · (−2)) mod 19 = (9 · (−2)) mod 19 = 1.

Wir notieren eine leichte Folgerung aus dem Eulerschen Kriterium:

Korollar 5.23. Sei p eine ungerade Primzahl. Dann gilt :

(a) Für a, b ∈ Z∗p und das Produkt c = ab mod p:

a, b ∈ QRp ⇒ c ∈ QRp;

a, b /∈ QRp ⇒ c ∈ QRp;

a ∈ QRp, b /∈ QRp ⇒ c /∈ QRp.

13

Page 14: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

(b) Für a ∈ Z∗p und a−1 in Z∗p , das multiplikative Inverse von a:

a ∈ QRp ⇔ a−1 ∈ QRp.

((a) folgt durch Anwendung von Exponentiationsregeln und Proposition 5.22; (b)folgt aus a · a−1 = 1 ∈ QRp und (a).)

Wenn das so einfach geht kann man dann zu einer Quadratzahl a auch leicht eineQuadratwurzel b modulo p berechnen?

Erstaunlicherweise gibt es hier zwei sehr verschiedene Fälle. Wir betrachten das Bei-spiel p = 19. Die Quadrate in Z∗p sind die 9 Zahlen 1, 4, 5, 6, 7, 9, 11, 16, 17. Wirberechnen a5 mod 19 für diese Quadratzahlen:

a 1 4 5 6 7 9 11 16 17

b = a5 mod 19 1 17 9 5 11 16 7 4 6

b2 mod 19 1 4 5 6 7 9 11 16 17

Wir sehen: a5 ist für jede der Quadratzahlen a eine Quadratwurzel. (Die andere istnatürlich dann (19 − a5) mod 19.) Dies ist kein Zufall. Die Zahl 5 ergibt sich ausp = 19 als 1

4(p+ 1). Diese Operation ist für alle Primzahlen möglich, die um 1 unter

einem Vielfachen von 4 liegen.

Proposition 5.24. Wenn p eine Primzahl ist derart, dass p + 1 durch 4 teilbar ist,

dann ist für jedes a ∈ QRp die Zahl a(p+1)/4 mod p eine Quadratwurzel von a.

Beweis :

((a(p+1)/4) mod p)2 mod p = (a(p+1)/2) mod p = (((a(p−1)/2) mod p) · a) mod p = a,

wobei wir Proposition 5.22(b) benutzt haben.

Mit anderen Worten: Für die Primzahlen p ∈ 3, 7, 11, 19, 23, 31, 43, 47, 59, . . . läuftdas Ziehen von Quadratwurzeln auf eine schnelle Exponentiation mit Exponent 1

4(p+

1) hinaus. (Bitkomplexität O((log p)3).)

Wie steht es mit den anderen Primzahlen 5, 13, 17, 29, 37, 41, 53, . . . ? Gibt es einenähnlich ezienten Algorithmus zum Finden von Quadratwurzeln? Hier gibt es noch-mals zwei Unterfälle. Wenn man leicht einen beliebigen nichtquadratischen Rest mo-dulo p nden kann, dann kann man mit Hilfe eines deterministischen Algorithmus,

14

Page 15: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

der in Anhang B beschrieben ist, mit O((log p)2) arithmetischen Operationen Qua-dratwurzeln nden. Dies ist der Fall, wenn p − 5 durch 8 teilbar ist, weil dann stets2 /∈ QRp gilt (Ergebnis der Zahlentheorie im Zusammenhang mit dem Quadrati-schen Reziprozitätsgesetz). Es bleiben die Primzahlen p, für die p−1 durch 8 teilbarist, beispielsweise 17, 41, 73 . . .. Interessanterweise kennt man für solche Primzahlenkeinen deterministischen Algorithmus, der Quadratwurzeln modulo p berechnet unddazu Zeit (log p)O(1) braucht. Wir betrachten hier einen randomisierten Algorith-mus für diese Aufgabe. Er funktioniert für alle Primzahlen der Form p, für die p− 1durch 4 teilbar ist.

Idee: Gegeben ein a ∈ QRp, bezeichne eine Quadratwurzel von a mit . Die andereQuadratwurzel von a ist dann −. Rechne mit (in Zp) wie mit einer Unbekannten.Es entstehen Ausdrücke α+ β · , die man addieren, subtrahieren und multiplizierenkann. Höhere Potenzen von entstehen nicht, wenn 2 durch a ersetzt wird. Es geltenfolgende Regeln:

(α + β · )± (γ + δ · ) = (α± γ) + (β ± δ) · ; (3)

(α + β · ) · (γ + δ · ) = (αγ + βδ · a) + (αδ + βγ) · .

Wenn man diese Operationen implementieren will, stellt man ein Element α + β · als (α, β) dar und rechnet wie in (3). Mit den in (3) angegebenen Operationenbildet die Menge der Paare (a, b) in Zp × Zp einen Ring mit 1. Insbesondere besitztdie Multiplikation ein neutrales Element, nämlich (1, 0), und die Multiplikation istkommutativ und assoziativ (prüft man leicht nach). Daher kann man das schnelleExponentiationsverfahren aus Algorithmus 5.3 anwenden, um symbolisch die Potenz(α + β · )i in log i Runden mit jeweils höchstens 10 Multiplikationen modulo p zuberechnen.

Wesentlich ist die folgende Grundeigenschaft. Wenn man in der abstrakten Notationeine Gleichheit ausgerechnet hat, dann gilt sie für beide Wurzeln von a:

Wenn sich mit den Regeln von (3) (α + β · )i zu γ + δ · berechnetund wenn w2 mod p = a ist,dann gilt (α + β · w)i = γ + δ · w.

(Man setzt w für ein und verfolgt die symbolische Rechnung, aber nun in Zp.)

15

Page 16: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

Algorithmus 5.5 (Quadratwurzeln, randomisiert).Input: Primzahl p, wobei p− 1 durch 4 teilbar ist;

a ∈ 1, . . . , p− 1 mit a(p−1)/2 mod p = 1.Methode:

(∗ Finde b mit b2 = a oder b2 − a /∈ QRp: ∗)1 repeat

2 b := Zufallszahl in 1, . . . , p− 1;3 if b2 mod p = a then return b; (∗ Glück gehabt! ∗)4 until (b2 − a)(p−1)/2 mod p = p− 1; (∗ b2 − a nicht-quadratischer Rest ∗)

5 (c+ d · )← (b+ 1 · )(p−1)/2;6 (∗ Schnelle Exponentiation mit Ausdrücken α + β · , Regeln (3) ∗)7 Berechne u = d−1 (im Körper Zp);8 (∗ Erweiterter Euklidischer Algorithmus ∗)9 return u,−u.

Korrektheit: w sei eine Quadratwurzel von a, die andere ist dann −w. Nach derobigen Vorüberlegung gilt (in Zp gerechnet), weil sowohl w2 = a als auch (−w)2 = agilt:

c+ dw = (b+ w)(p−1)/2 ∈ 1,−1 und (4)

c− dw = (b− w)(p−1)/2 ∈ 1,−1.

Wir addieren diese beiden Gleichungen und erhalten:

2 · c = (b+ w)(p−1)/2 + (b− w)(p−1)/2. (5)

Andererseits ist (b2 − a)(p−1)/2 = −1 (wegen Zeile 4 im Algorithmus). Wir setzena = w2 ein und erhalten

−1 = (b2 − w2)(p−1)/2 = (b+ w)(p−1)/2 · (b− w)(p−1)/2.

Wegen (4) muss einer der Faktoren gleich 1 und der andere gleich −1 sein:

(b+ w)(p−1)/2, (b− w)(p−1)/2 = 1,−1.

Mit (5) folgt 2 · c = 0, und damit c = 0, weil in Zp gilt, dass 2 = 1 + 1 6= 0 ist.Subtraktion der Gleichungen in (4) ergibt

2dw = (b+ w)(p−1)/2 − (b− w)(p−1)/2.

16

Page 17: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

Die beiden Terme in der Dierenz sind 1 und −1 (in irgendeiner Reihenfolge), alsoist 2dw ∈ 2,−2, oder (wieder weil 2 6= 0):

dw ∈ 1,−1, d.h.: w ∈ d−1,−d−1,

wobei das multiplikative Inverse in Zp berechnet wird. Weil nach der Ausgangssitua-tion w und −w die Quadratwurzeln von a sind, sind auf jeden Fall u = d−1 und−u = −d−1 diese Wurzeln.

Rechenzeit: In der Laufzeit des Algorithmus gibt es drei entscheidende Kompo-nenten: (i) Das Finden eines Elements b derart dass b Quadratwurzel von a (sehrunwahrscheinlich) oder b2− a /∈ QRp (ein nicht-quadratischer Rest) ist; (ii) die Ex-ponentiation zum Finden von (a+1 ·)(p−1)/2 (die höchstens log p Schleifendurchläufemit je höchstens 10 modularen Multiplikationen erfordert); (iii) der Aufwand für denerweiterten Euklidischen Algorithmus. Teile (ii) und (iii) haben Kosten, die einer fe-sten Anzahl modularer Exponentiationen entspricht, also O(log p) Multiplikationenund Additionen. Für den ersten Teil ist zu überlegen, was die Dichte

|G|p− 1

=|b ∈ Z∗p | b2 = a ∨ b2 − a /∈ QRp|

p− 1

der Menge G der guten Elemente in Z∗p ist.

Behauptung: |G| = 12(p+ 3).

Beweis der Behauptung : Die Elemente w und −w sind verschiedene und jedenfallsgute Elemente. Es geht also um die Anzahl der guten Elemente in der Menge (Nicht-Wurzeln)

NW := Z∗p − w,−w.

Wir denieren eine Funktion f : NW→ Zp durch

f(b) :=b+ w

b− w(Arithmetik in Zp).

Diese Funktion ist wohldeniert, da b 6= w, und sie nimmt den Wert 0 nicht an, dab 6= −w. Weiterhin wird der Wert 1 nicht angenommen (wenn b + w = b − w, wäre2w = 0, also w = 0), und der Wert −1 auch nicht (wenn b + w = −(b − w), wäre2b = 0, also b = 0, was b ∈ Z∗p widerspricht). Also gilt: f : NW→ 2, . . . , p−2. Mansieht leicht, dass f injektiv ist:

17

Page 18: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

b1 + w

b1 − w=b2 + w

b2 − w⇒ (b1 + w)(b2 − w) = (b2 + w)(b1 − w)

⇒ b1b2 − wb1 + wb2 − w2 = b1b2 + wb1 − wb2 − w2

⇒ 2w(b2 − b1) = 0

⇒ b1 = b2,

wobei wir 2 6= 0 und w 6= 0 benutzt haben. Aus der Injektivität folgt, dass f eineBijektion zwischen NW und 2, . . . , p − 2 ist. In der letzteren Menge gibt es (p −1)/2 − 2 quadratische Reste (weil 1 und p − 1 quadratische Reste sind: (p − 1)/2ist gerade, daher ist (−1)(p−1)/2 = 1), also p − 3 − ((p − 1)/2 − 2) = (p − 1)/2nicht-quadratische Reste. Bleibt zu zeigen:

b2 − a ∈ QRp ⇔ b+ w

b− w∈ QRp.

Das gilt, weil b2−a = (b+w)(b−w) ist, also (b+w)/(b−w) = (b2−a)/(b−w)2, undnach Korollar 5.23 die Menge der (nicht-)quadratischen Reste in Zp unter Divisionmit quadratischen Resten (hier (b−w)2) abgeschlossen ist. Wegen dieser Eigenschaftvon f ist

|G| = 2 + |u ∈ NW | f(u) /∈ QRp| = 2 + (p− 1)/2 = (p+ 3)/2.

Damit ist die Behauptung bewiesen. Die Wahrscheinlichkeit, in Zeile 2 ein Elementvon |G| zu wählen, ist also (p + 3)/(2(p − 1)) > 1

2. Damit ist die erwartete Anzahl

von Versuchen, bis ein geeignetes b gefunden wird, kleiner als 2.

Bemerkung: Es gibt einen anderen randomisierten Algorithmus zur Ermittlung vonQuadratwurzeln modulo p, der mit O((log p)2) Multiplikationen modulo p (entspre-chend einer logarithmischen Anzahl von schnellen Exponentiationen) auskommt. Die-ser Algorithmus benutzt Randomisierung, um einen beliebigen nichtquadratischenRest zu nden; mit diesem Element wird dann deterministisch weiter gearbeitet. Sie-he Anhang B.

Bemerkung: Für Zahlen der Form n = p · q für Primzahlen p, q ist kein ezienterAlgorithmus zur Ermittlung von Quadratwurzeln modulo n bekannt (auch kein ran-domisierter!), wenn nur n und die Quadratzahl a (modulo n), nicht aber die Faktorenp und q Teil der Eingabe sind.

18

Page 19: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

5.3 Der Miller-Rabin-Primzahltest

In diesem Abschnitt lernen wir einen randomisierten Algorithmus kennen, der eserlaubt, zu einer gegebenen Zahl n zu entscheiden, ob n eine Primzahl ist oder nicht.

Ein idealer Primzahltest sieht so aus:

Eingabe: Eine natürliche Zahl n ≥ 3.

Ausgabe: 0, falls n eine Primzahl ist; 1, falls n zusammengesetzt ist.

Wozu braucht man Primzahltests? Zunächst ist die Frage Ist n eine Primzahl? einegrundlegende mathematisch interessante Fragestellung. Spätestens mit dem Sieges-zug des RSA-Kryptosystems (siehe Vorlesung Public-Key-Kryptographie) hat sichdie Situation jedoch dahin entwickelt, dass man Algorithmen benötigt, die immerwieder neue vielzirige Primzahlen (etwa mit 512 oder 1024 Bits2 bzw. 155 oder 310Dezimalziern) bereitstellen können. Den Kern dieser Primzahlerzeugungs-Verfahren(siehe Abschnitt 5.4) bildet ein Verfahren, das eine gegebene Zahl n darauf testet, obsie prim ist.

Ein naiver Primzahltest (versuchsweise Division), der dem brute-force-Paradigmafolgt, ndet durch direkte Division der Zahl n durch 2, 3, 4, . . . , b

√nc heraus, ob

n einen nichttrivialen Teiler hat. Man kann dieses Verfahren durch einige Tricksbeschleunigen, aber die Rechenzeit wächst dennoch mit Θ(

√n). Dies macht es für

Zahlen mit mehr als 40 Dezimalstellen praktisch undurchführbar, von Zahlen mitmehr als 100 Dezimalstellen ganz zu schweigen. (Achtung: Damit wird nichts überdie Qualität anderer Faktorisierungsalgorithmen gesagt. Es gibt andere, sehr fort-geschrittene Faktorisierungsalgorithmen, die bei entsprechendem Zeitaufwand undmit sehr leistungsstarken Rechnern auch noch mit 200-stelligen Zahlen zurechtkom-men. Für Information zu früheren und aktuelleren Faktorisierungserfolgen siehe z. B.http://en.wikipedia.org/wiki/RSA_numbers.)

In diesem Abschnitt beschreiben wir den randomisierten Primzahltest von Miller-Rabin. Dabei handelt es sich um einen Monte-Carlo-Algorithmus mit einseitigemFehler. Das heiÿt: Auf Eingaben n, die Primzahlen sind, wird immer 0 ausgegeben;auf Eingaben n, die zusammengesetzt sind, gibt es eine gewisse (von n abhängige)Fehlerwahrscheinlichkeit. Der Miller-Rabin-Algorithmus hat Fehlerschranke 1

4. Wir

2http://www.rsa.com/rsalabs/node.asp?id=2218 am 29.12.2012: RSA Laboratories current-ly recommends key sizes of 1024 bits for corporate use and 2048 bits for extremely valuable keys likethe root key pair used by a certifying authority (see Question 4.1.3.12). Several recent standardsspecify a 1024-bit minimum for corporate use. Dabei bedeutet key size die Bitanzahl eines Produktsn = p · q für Primzahlen p und q mit jeweils der halben Länge.

19

Page 20: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

beweisen nur die Fehlerschranke 12. Im Beweis benutzen wir einfache zahlentheore-

tische und gruppentheoretische Überlegungen. Eine herausragende Eigenschaft desMiller-Rabin-Tests ist seine Ezienz. Wir werden sehen, dass selbst bei Verwendungder Schulmethoden für Multiplikation und Division die Bitkomplexität des Primzahl-tests nur O((log n)3) ist.

Bemerkung: Der Miller-Rabin-Algorithmus stammt aus dem Jahr 1977; er folg-te einem kurz vorher vorgestellten anderen randomisierten Primzahltest (Solovay-Strassen-Test). Für diesen und andere randomisierte Primzahltests (z. B. Lucas-Leh-mer-Test) sei auf die Literatur verwiesen. Im Jahr 2002 stellten Agarwal, Kayal undSaxena einen deterministischen Primzahltest mit polynomieller Rechenzeit vor. (DieRechenzeit ist z. B. durch O((log n)7,5) beschränkt.) Dieser Algorithmus stellte inso-fern einen gewaltigen Durchbruch dar, als er ein Jahrhunderte altes oenes Problemlöste. Andererseits ist seine Laufzeit im Vergleich etwa zu dem hier diskutierten ran-domisierten Verfahren so hoch, dass nach wie vor die randomisierten Algorithmenbenutzt werden, um für kryptographische Anwendungen Primzahlen zu erzeugen.

Da gerade Zahlen leicht zu erkennen sind, beschränken wir im folgenden unsere Über-legungen auf ungerade Zahlen n ≥ 3.

5.3.1 Der Fermat-Test

Wir erinnern uns an den kleinen Satz von Fermat (Fakt 5.14):

n ist Primzahl und 1 ≤ a < n ⇒ an−1 mod n = 1.

Wir können diese Aussage dazu benutzen, um Belege oder Zertikate dafür anzu-geben, dass eine Zahl n zusammengesetzt ist: Wenn wir eine Zahl a mit 1 ≤ a < nnden, für die an−1 mod n 6= 1 gilt, dann ist n denitiv keine Primzahl.

Denition 5.25. Sei n eine ungerade Zahl. Eine Zahl a mit 1 ≤ a < n− 1 heiÿt ein

F-Zeuge für n, wenn an−1 mod n 6= 1 gilt. Wenn n zusammengesetzt ist und für amit 1 ≤ a < n− 1 die Gleichheit an−1 mod n = 1 gilt, heiÿt a ein F-Lügner für n.

Wenn a ein F-Zeuge für n ist, kann n keine Primzahl sein. Eigentlich ist a also einZeuge (oder Beweis oder Zertikat oder Beleg) für die Tatsache, dass n keine Primzahlist. Wir bemerken, dass ein F-Zeuge belegt, dass es Faktoren k, ` > 1 gibt mit n = k·`,dass aber solche Faktoren nicht angegeben oder gefunden werden müssen. Dies wirdvon Primzahltests auch nicht verlangt und normalerweise auch nicht geleistet.

20

Page 21: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

Vielfache von 7 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84

Vielfache von 13 13, 26, 39, 52, 65, 78

F-Zeugen in Z∗91 2, 5, 6, 8, 11, 15, 18, 19, 20, 24, 31, 32,

33, 34, 37, 41, 44, 45, 46, 47, 50, 54, 57, 58,

59, 60, 67, 71, 72, 73, 76, 80, 83, 85, 86, 89

F-Lügner 1, 3, 4, 9, 10, 12, 16, 17, 22, 23, 25, 27,

29, 30, 36, 38, 40, 43, 48, 51, 53, 55, 61, 62,

64, 66, 68, 69, 74, 75, 79, 81, 82, 87, 88, 90

Tabelle 2: F-Zeugen und F-Lügner für n = 91 = 7 · 13

Man sieht sofort, dass 1 und n − 1 immer F-Lügner sind: Es gilt 1n−1 mod n = 1und (n− 1)n−1 ≡ (−1)n−1 ≡ 1 (mod n), weil n− 1 gerade ist.

Für jede zusammengesetzte Zahl n gibt es einige F-Zeugen, nämlich die Elemente von1, . . . , n− 1 − Z∗n .

Lemma 5.26. Ist n keine Primzahl und a ∈ Zn \ Z∗n folgt: a ist F-Zeuge.

Beweis : Wenn an−1 mod n = 1, haben wir nach Fakt 5.4 an−1−1 = yn für eine ganzeZahl y. Dann ist ggt(n, a) ein Teiler von 1, also muss a ∈ Z∗n gelten.

Leider ist für manche zusammengesetzten Zahlen n die Menge 1, . . . , n − 1 − Z∗näuÿerst dünn. Wenn zum Beispiel n = pq für zwei Primzahlen p und q ist, danngilt gcd(a, n) > 1 genau dann wenn p oder q ein Teiler von a ist. Es gibt genaup + q − 2 solche Zahlen a in 1, . . . , n − 1, was gegenüber n sehr klein ist, wennp und q annähernd gleich groÿ sind. Ein Beispiel: n = 91 = 7 · 13. Tabelle 2 zeigt,dass es 18 Vielfache von 7 und 13 gibt (für gröÿere p und q wird der Anteil dieseroensichtlichen F-Zeugen noch kleiner sein), und daneben weitere 36 F-Zeugen und36 F-Lügner in 1, 2, . . . , 90. In diesem Beispiel gibt es um einiges mehr F-Zeugenals F-Lügner. Wenn dies für alle zusammengesetzten Zahlen n der Fall wäre, wäre eseine elegante randomisierte Strategie, einfach zufällig nach F-Zeugen zu suchen.

Dies führt zu unserem ersten Versuch für einen randomisierten Primzahltest.

21

Page 22: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

Algorithmus 5.6 (Fermat-Test).

Eingabe: Ungerade Zahl n ≥ 5.Methode:

1 Wähle a zufällig aus 2, . . . , n− 2;2 if an−1 mod n 6= 1 then return 1 else return 0.

Die Laufzeitanalyse liegt auf der Hand: Der teuerste Teil ist die Berechnung derPotenz an−1 mod n durch schnelle Exponentiation, die nach den Ergebnissen vonLemma 5.17 O(log n) arithmetische Operationen und O((log n)3) Bitoperationen be-nötigt. Weiter ist es klar, dass der Algorithmus einen F-Zeugen gefunden hat, wenner 1 ausgibt, dass in diesem Fall also n zusammengesetzt sein muss. Umgekehrtausgedrückt: Wenn n eine Primzahl ist, gibt der Fermat-Test garantiert 0 aus.

Für n = 91 wird das falsche Ergebnis 0 ausgegeben, wenn als a einer der 34 F-Lügnerauÿer 1 und 90 gewählt wird. Die Wahrscheinlichkeit hierfür ist 34

88= 17

44≈ 0,3864.

Für viele zusammengesetzte Zahlen n gibt es reichlich F-Zeugen, so dass der Fermat-Test für diese n mit konstanter Wahrscheinlichkeit das korrekte Ergebnis liefert. DerBeweis benutzt ein einfaches Ergebnis aus der Gruppentheorie.3

Fakt 5.27. Wenn G eine endliche Gruppe und H eine Untergruppe von G ist, dann

ist |H| ein Teiler von |G|.Insbesondere gilt : Wenn H echte Untergruppe von G ist, dann gilt |H| ≤ 1

2|G|.

(Der Beweis hierfür läuft etwa so: Die Äquivalenzrelation ∼H auf G, die durch a ∼H b⇔ b−1a ∈ H deniert ist, zerlegt die Menge G in Äquivalenzklassen aH = ah | h ∈H, die sogenannten linken Nebenklassen. Die Anzahl G : H dieser Nebenklassenheiÿt der Index von H in G. Alle diese Nebenklassen haben die gleiche Kardinalität,weil für jedes a die Funktion H 3 h 7→ ah ∈ aH eine Bijektion zwischen H und aHist. Daraus folgt: |G| = |H| · (G : H).)

Hilfreich ist noch das folgende Untergruppenkriterium für endliche Gruppen.

Fakt 5.28. Wenn G eine endliche Gruppe mit neutralem Element 1 ist und A eine

Teilmenge von G, derart dass

(i) 1 ∈ A und

3Wir betrachten im Folgenden die Gruppe Z∗n mit Multiplikation modulo n als Operation undder 1 als neutralem Elment.

22

Page 23: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

(ii) A unter der Gruppenoperation von G abgeschlossen ist, d. h., wenn für a, b ∈ Aauch immer ab ∈ A gilt,

dann ist A eine Untergruppe von G.

(Zum Beweis muss man sich nur überlegen, dass für jedes a ∈ A auch das Inversea−1 in A liegt. Das sieht man so: Weil G endlich ist, können die Elemente 1 =a0, a, a2, a3, . . . nicht alle verschieden sein. Also gibt es i < j mit ai = aj. Dann istaj−i = 1, also a · aj−i−1 = 1, also aj−i−1 invers zu a, und aj−i−1 ∈ A wegen derAbgeschlossenheit.)

Nun können wir das Verhalten des Fermat-Tests für gutmütige Eingabezahlen nanalysieren.

Satz 5.29. Sei n ≥ 9 eine ungerade zusammengesetzte Zahl. Wenn es mindestens

einen F-Zeugen a ∈ Z∗n gibt, dann liefert der Fermat-Test auf Eingabe n mit Wahr-

scheinlichkeit gröÿer als 12die korrekte Antwort 1.

Beweis : In Lemma 5.26 haben wir gesehen, dass die Menge

LFn = a | 1 ≤ a < n, an−1 mod n = 1

der F-Lügner für n eine Teilmenge von Z∗n ist. Wir zeigen, dass LFn sogar eine Unter-

gruppe von Z∗n ist. Hierzu wenden wir Fakt 5.28 an:

(i) 1 ∈ LFn, weil 1n−1 = 1;

(ii) LFn ist unter der Gruppenoperation in Z∗n abgeschlossen, nämlich der Multi-

plikation modulo n, denn wenn an−1 mod n = 1 und bn−1 mod n = 1, folgt(ab)n−1 ≡ an−1 · bn−1 ≡ 1 · 1 ≡ 1 (mod n).

Aus der Annahme, dass es in Z∗n mindestens einen F-Zeugen gibt, erhalten wir, dassLFn eine echte Untergruppe von Z∗n ist. Mit Fakt 5.27 folgt: |LF

n| ≤ ϕ(n)/2 ≤ (n−2)/2.Daher ist die Wahrscheinlichkeit, dass ein aus 2, . . . , n − 2 zufällig gewähltes a inLFn − 1, n− 1 liegt, höchstens

(n− 2)/2− 2

n− 3=

n− 6

2(n− 3)<

1

2, (6)

wie gewünscht.

Wie üblich verringern wir die Fehlerwahrscheinlichkeit durch Wiederholung.

23

Page 24: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

Algorithmus 5.7 (Iterierter Fermat-Test).

Eingabe: Ungerade Zahl n ≥ 5, eine Zahl ` ≥ 1.Methode:

1 repeat ` times

2 a← ein zufälliges Element von 2, . . . , n− 2;3 if an−1 mod n 6= 1 then return 1;4 return 0.

Wenn die Ausgabe 1 ist, hat der Algorithmus einen F-Zeugen für n gefunden, also istn zusammengesetzt. D. h.: Wenn n eine Primzahl ist, ist die Ausgabe 0. Andererseits:Wenn n zusammengesetzt ist, und es mindestens einen F-Zeugen a ∈ Z∗n gibt, dannist nach Satz 5.29 die Wahrscheinlichkeit für die falsche Ausgabe 0 höchstens

(12

)`=

2−`. Indem wir ` genügend groÿ wählen, können wir die Fehlerwahrscheinlichkeit soklein wie gewünscht einstellen.

Wenn es darum geht, aus einem genügend groÿen Bereich zufällig gewählte Zahlendarauf zu testen, ob es sich um eine Primzahl handelt, dann ist der Fermat-Test einesehr eziente und zuverlässige Methode. Wir kommen darauf im folgenden Abschnittnochmals zurück.

Wenn man allerdings über die Herkunft der zu testenden Zahl n keine Information hatund eventuell damit rechnen muss, dass jemand (ein Gegenspieler) absichtlich einebesonders schwierige Eingabe vorlegt, dann stöÿt der Fermat-Test an eine Grenze. Esgibt nämlich widerspenstige zusammengesetzte Zahlen, denen man mit diesem Testnicht beikommen kann, weil alle Elemente von Z∗n F-Lügner sind. Mit diesen befasstsich der folgende Abschnitt.

5.3.2 Carmichael-Zahlen

Denition 5.30. Eine ungerade zusammengesetzte Zahl n heiÿt eine Carmichael-

Zahl, wenn für alle a ∈ Z∗n die Gleichung an−1 mod n = 1 gilt.

Die kleinste Carmichael-Zahl ist 561 = 3 · 11 · 17. Weitere kleine Carmichael-Zahlensind 1105 = 5 · 13 · 17 und 1729 = 7 · 13 · 19. Erst im Jahr 1994 wurde bewiesen, dasses unendlich viele Carmichael-Zahlen gibt, genauer: wenn x genügend groÿ ist, danngibt es in n | n ≤ x mehr als x2/7 Carmichael-Zahlen. Die aktuell beste bekannteuntere Schranke ist x1/3. Genaueres ist über den Anteil von Carmichael-Zahlen anden zusammengesetzten Zahlen nicht bekannt. (Alles deutet aber darauf hin, dass sieeher selten sind.)

24

Page 25: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

Wenn wir dem Fermat-Test eine Carmichael-Zahl n als Eingabe geben, ist die Wahr-scheinlichkeit für die falsche Antwort 0 genau

ϕ(n)− 2

n− 3≈ ϕ(n)

n=

∏p primp teilt n

(1− 1

p

).

Diese Wahrscheinlichkeit liegt nahe an 1, wenn n nur wenige und relativ groÿe Prim-faktoren hat. An solchen Carmichael-Zahlen besteht etwa im Bereich der Zahlen imBereich [1015, 1016] kein Mangel, wie ein Blick in entsprechende Tabellen zeigt. ZumBeispiel ist n = 651693055693681 = 72931 · 87517 · 102103 eine Carmichael-Zahl mitϕ(n)/n > 0.99996.

Der Wiederholungstrick zur Wahrscheinlichkeitsverbesserung hilft hier leider auchnicht, denn wenn etwa p0 der kleinste Primfaktor von n ist, und n nur 3 oder 4Faktoren hat, dann sind Ω(p0) Wiederholungen nötig, um die Fehlerwahrscheinlichkeitauf 1

2zu drücken. Sobald p0 mehr als 30 Dezimalstellen hat, ist dies undurchführbar.

Für einen zuverlässigen, ezienten Primzahltest, der für alle Eingabezahlen funk-tioniert, müssen wir über den Fermat-Test hinausgehen. Interessanterweise ist diespraktisch ohne Ezienzverlust möglich.

Für spätere Benutzung stellen wir noch eine Hilfsaussage über Carmichael-Zahlenbereit.

Lemma 5.31. Wenn n eine Carmichael-Zahl ist, dann ist n keine Primzahlpotenz.

Beweis : Wir beweisen die Kontraposition: Wenn n = p` für eine ungerade Primzahlp und einen Exponenten ` ≥ 2 ist, dann ist n keine Carmichael-Zahl.

Dazu genügt es, eine Zahl a ∈ Z∗n anzugeben, so dass an−1 mod n 6= 1 ist. Wirdenieren:

a := p`−1 + 1.

(Wenn z. B. p = 7 und ` = 3 ist, ist n = 343 und a = 49 + 1 = 50.) Man sieht sofort,dass a < p` = n ist, und dass a nicht von p geteilt wird, also a und n teilerfremdsind; also ist a ∈ Z∗n . Nun rechnen wir modulo n, mit der binomischen Formel:

an−1 ≡ (p`−1 + 1)n−1

≡∑

0≤j≤n−1

(n− 1

j

)(p`−1)j (7)

≡ 1 + (p` − 1) · p`−1 (mod n).

25

Page 26: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

(Die letzte Äquivalenz ergibt sich daraus, dass für j ≥ 2 gilt, dass (` − 1)j ≥ ` ist,also der Faktor (p`−1)j = p(`−1)j durch n = p` teilbar ist, also modulo n wegfällt.)Nun ist p`− 1 nicht durch p teilbar, also ist (p`− 1) · p`−1 nicht durch n = p` teilbar.Damit folgt aus (7), dass an−1 6≡ 1 (mod n) ist, also an−1 mod n 6= 1.

Folgerung: Jede Carmichael-Zahl n lässt sich als n = n1 · n2 schreiben, wo n1 undn2 teilerfremde ungerade Zahlen ≥ 3 sind.

(Eine etwas genauere Untersuchung, die wir hier aber nicht benötigen, ergibt, dassdie Primfaktoren einer Carmichael-Zahl n alle verschieden sein müssen, und dass nmindestens drei Primfaktoren haben muss. Aus dieser Tatsache kann man entnehmen,dass Carmichael-Zahlen eher selten sind.)

5.3.3 Nichttriviale Quadratwurzeln der 1

Aus Abschnitt 5.2, Lemma 5.20, wissen wir, dass für jede Primzahl p gilt:

b2 mod p = 1 ⇔ b ∈ 1, p− 1.

Diese Eigenschaft lässt sich in ein weiteres Zertikat für zusammengesetzte Zahlenummünzen:

Wenn es ein b ∈ 2, . . . , n− 2 gibt, das b2 mod n = 1 erfüllt,dann ist n zusammengesetzt.

Zahlen b ∈ 2, . . . , n − 2 mit b2 mod n = 1 heiÿen nichttriviale Quadratwur-

zeln der 1 modulo n. Solche Zahlen gibt es nur, wenn n zusammengesetzt ist.Beispielsweise sind die Zahlen 1, 27, 64 und 90 genau die Quadratwurzeln der 1modulo 91; davon sind 27 und 64 nichttrivial. Allgemeiner sieht man mit der Ver-allgemeinerung von Fakt 5.16 (Chinesischer Restsatz) auf r Faktoren leicht ein, dasses für ein Produkt n = p1 · · · pr aus verschiedenen ungeraden Primzahlen p1, . . . , prgenau 2r Quadratwurzeln der 1 modulo n gibt, nämlich die Zahlen b, 0 ≤ b < n,die b mod pj ∈ 1, pj − 1, 1 ≤ j ≤ r, erfüllen. Wenn n nicht sehr viele verschiede-ne Primfaktoren hat, ist es also aussichtslos, einfach zufällig gewählte b's darauf zutesten, ob sie vielleicht nichttriviale Quadratwurzeln der 1 sind. Dennoch wird unsdieser Begri bei der Formulierung eines ezienten Primzahltests helfen.

5.3.4 Der Miller-Rabin-Test

Wir kehren nochmals zum Fermat-Test zurück und sehen uns die dort durchgeführteExponentiation an−1 mod n etwas genauer an. Die Zahl n− 1 ist gerade, daher kann

26

Page 27: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

a b0 = a81 b1 = a162 b2 = a324 F-Z.? A-Z.?

2 252 129 66 × ×

7 307 324 1

32 57 324 1

49 324 1 1

65 0 0 0 × ×

126 1 1 1

201 226 51 1 ×

224 274 1 1 ×

Tabelle 3: Potenzen an−1 mod n mit Zwischenschritten, n = 325

man sie als n − 1 = u · 2k schreiben, für eine ungerade Zahl u und ein k ≥ 1. Danngilt an−1 ≡ ((au) mod n)2

kmod n, und wir können an−1 mod n mit k + 1 Zwischen-

schritten berechnen: Mit

b0 = au mod n; bi = (b2i−1) mod n, für i = 1, . . . , k,

ist bk = an−1 mod n. Beispielsweise erhalten wir für n = 325 = 52 · 13 den Wertn− 1 = 324 = 81 · 22. In Tabelle 3 berechnen wir a81, a162 und a324, alle modulo 325,für verschiedene a.

Wir sehen, dass 2 ein F-Zeuge für 325 ist, der in Z∗325 liegt, und dass 65 ein F-Zeugeist, der nicht in Z∗325 liegt. Dagegen sind 7, 32, 49, 126, 201 und 224 alles F-Lügnerfür 325. Wenn wir aber 201324 mod 325 mit zwei Zwischenschritten berechnen, dannentdecken wir, dass 51 eine nichttriviale Quadratwurzel der 1 ist, was beweist, dass325 keine Primzahl ist. Ähnlich liefert die Berechnung mit Basis 224, dass 274 einenichttriviale Quadratwurzel der 1 ist. Die entsprechenden Berechnungen mit 7, 32 und49 dagegen liefern keine weiteren Informationen, weil 7162 ≡ 32162 ≡ −1 (mod 325)und 4981 ≡ −1 (mod 325) gilt. Auch die Berechnung der Potenzen von 126 liefertkeine nichttriviale Quadratwurzel der 1, weil 12681 mod 325 = 1 gilt.

Wie kann die Folge b0, . . . , bk überhaupt aussehen? Wenn bi = 1 or bi = n− 1, dannsind bi+1, . . . , bk alle gleich 1. Daher beginnt die Folge b0, . . . , bk mit einer (eventuellleeren) Folge von Elementen /∈ 1, n − 1 und endet mit einer (eventuell leeren)

27

Page 28: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

b0 b1 · · · · · · bk−1 bk Fall F-Z.? A-Z.?

1 1 · · · 1 1 1 · · · 1 1 1

n− 1 1 · · · 1 1 1 · · · 1 1 2a

∗ ∗ · · · ∗ n− 1 1 · · · 1 1 2b

∗ ∗ · · · ∗ ∗ ∗ · · · ∗ n− 1 3 × ×

∗ ∗ · · · ∗ ∗ ∗ · · · ∗ ∗ 3 × ×

∗ ∗ · · · ∗ 1 1 · · · 1 1 4a ×

∗ ∗ · · · ∗ ∗ ∗ · · · ∗ 1 4b ×

Tabelle 4: Potenzen an−1 mod n berechnet mit Zwischenschritten, mögliche Fälle.

Folge von Einsen. Diese beiden Teile können von einem Eintrag n− 1 getrennt sein;dies muss aber nicht so sein. Alle möglichen Muster sind in Tabelle 4 angegeben.Dabei steht ∗ für ein Element /∈ 1, n − 1. Es ergeben sich 4 Fälle, mit einigenUnterfällen:Fall 1: b0 = 1. Alle bi sind gleich 1.Fall 2a: b0 = n− 1. Alle bi mit 0 < i ≤ k sind gleich 1.Fall 2b: b0 /∈ 1, n− 1, aber es gibt ein i ∈ 1, . . . , k− 1 mit bi = n− 1. Dann giltbi+1 = · · · = bk = 1.In den Fällen 1, 2a und 2b gilt bk = 1, also hilft der kleine Satz von Fermat nichtweiter. Die Folge (b0, . . . , bk) enthält aber auch keine nichttriviale Quadratwurzel der1. Es ergibt sich aus der Rechnung kein Hinweis darauf, dass n zusammengesetzt ist.Wenn n eine Primzahl ist, muss einer dieser Fälle eintreten.Fall 3: bk 6= 1. Dann ist n zusammengesetzt, weil a ein F-Zeuge für n ist. (Es spieltkeine Rolle, ob bk = n− 1 ist oder nicht.) Alle Werte b0, . . . , bk−1 müssen dann von 1und n− 1 verschieden sein.Fall 4: b0 /∈ 1, n− 1, aber es gibt ein i < k mit bi /∈ 1, n− 1 und bi+1 = 1.Dann ist bi eine nichttriviale Quadratwurzel der 1 modulo n und damit ein Zertikatdafür, dass n zusammengesetzt ist. (Fall 4b stellt den Sonderfall i = k − 1 dar.)

In den Fällen 3 und 4 stellt die Zahl a (und seine Potenzen b0, . . . , bk) einen Belegdafür dar, dass n keine Primzahl ist. Diejenigen a ∈ 1, . . . , n− 1, die zu Fall 3 oderFall 4 führen, lassen sich wie folgt charakterisieren:

28

Page 29: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

(∗) b0 6= 1, und n− 1 erscheint nicht in der Folge b0, . . . , bk−1.

Man beachte, dass das letzte Folgenglied bk keine Rolle spielt. (Es ist daher nurkonsequent, dass es im späteren Algorithmus nicht einmal berechnet wird.) Die a, die(∗) erfüllen, sind Beleg dafür, dass n zusammengesetzt ist. Dies führt zu folgenderDenition.

Denition 5.32. Sei n ≥ 3 ungerade. Wir schreiben n− 1 = u · 2k, für u ungerade,

k ≥ 1. Eine Zahl a, 1 ≤ a < n, heiÿt ein A-Zeuge für n, wenn au mod n 6= 1und au·2

imod n 6= n − 1 für alle i mit 0 ≤ i < k gilt (Fälle 3 und 4). Wenn n

zusammengesetzt ist und a, 1 ≤ a < n, kein A-Zeuge ist, dann heiÿt a ein A-Lügnerfür n (Fälle 1 und 2). Die Menge der A-Lügner heiÿt LA

n .

Aus der obigen Diskussion der möglichen Fälle folgert man leicht folgende Beobach-tungen.

Lemma 5.33. Sei n ≥ 3 ungerade.

(a) Wenn a ein F-Zeuge für n ist, dann ist a auch ein A-Zeuge.

(b) Wenn es einen A-Zeugen a für n gibt, dann ist n zusammengesetzt.

Beweis : Sei 1 ≤ a < n und sei b0, . . . , bk die zugehörige Folge au·2i

mod n, 0 ≤ i ≤ k.(a) Wenn a ein F-Zeuge für n ist, dann gilt bk 6= 1, und daher tritt Fall 3 oder Fall4b ein. Damit ist a auch ein A-Zeuge für n. (b) Sei a ein A-Zeuge für n. Dann tritauf die Folge (b0, . . . , bk) Fall 3 oder Fall 4 zu. Wir haben oben schon gesehen, dassdann n eine zusammengesetzte Zahl sein muss.

Der Miller-Rabin-Test besteht nun einfach darin, ein aus 2, . . . , n − 2 zufällig ge-wähltes a darauf zu testen, ob a ein A-Zeuge ist.

Historisch hat schon der russische Mathematiker M. Artjuhov 1966 vorgeschlagen, dieFolge bi = au·2

imod n, 0 ≤ i ≤ k, in einem Primzahltest für n zu benutzen. Im Jahr

1976 stellte G. M. Miller einen deterministischen Algorithmus vor, der auf dieser Ideeberuhte. Er testete die kleinsten O((log n)2) Elemente a ∈ 2, 3, . . . , n − 1 auf dieEigenschaft, A-Zeugen zu sein. Der Algorithmus hat polynomielle Laufzeit und liefertdas korrekte Ergebnis, wenn die erweiterte Riemannsche Vermutung (ERH) stimmt,eine berühmte Vermutung aus der Zahlentheorie, die bis heute unbewiesen ist. Um1980 schlugen M. Rabin und (unabhängig) L. Monier vor, Millers Algorithmus so zumodizieren, dass die zu testende Zahl a zufällig gewählt wird, und bewiesen, dass

29

Page 30: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

dieser Algorithmus konstante Fehlerwahrscheinlichkeit haben wird. Der Algorithmusheiÿt heute allgemein der Miller-Rabin-Test .

Der Test selbst ist leicht und sehr ezient durchführbar: Man berechnet zunächstb0 = au mod n und testet, ob b0 ∈ 1, n− 1 ist. Falls ja, trit Fall 1 oder Fall 2a zu,die Ausgabe ist 0. Falls nein, berechnet man durch iteriertes Quadrieren nacheinanderdie Werte b1, b2, . . ., bis

• entweder der Wert n− 1 auftaucht (Fall 2b, Ausgabe 0)

• oder der Wert 1 auftaucht (Fall 4a, a ist A-Zeuge, Ausgabe 1)

• oder b1, . . . , bk−1 berechnet worden sind, ohne dass Werte n − 1 oder 1 vorge-kommen sind (Fall 3 oder 4b, a ist A-Zeuge, Ausgabe 1).

In Pseudocode sieht das Verfahren dann folgendermaÿen aus:

Algorithmus 5.8 (Der Miller-Rabin-Primzahltest).

Eingabe: Eine ungerade Zahl n ≥ 5.Methode:

1 Bestimme u ungerade und k ≥ 1 mit n− 1 = u · 2k;2 wähle zufällig ein a aus 2, . . . , n− 2;3 b ← au mod n; (∗ mit schnellem Potenzieren ∗)4 if b ∈ 1, n− 1 then return 0; (∗ Fall 1 oder 2a ∗)5 for j from 1 to k − 1 do (∗ wiederhole (k − 1)-mal ∗)6 b← b2 mod n;7 if b = n− 1 then return 0; (∗ Fall 2b ∗)8 if b = 1 then return 1; (∗ Fall 4a ∗)9 return 1. (∗ Fall 3 oder 4b ∗)

Wie steht es mit der Laufzeit des Algorithmus? Man benötigt höchstens log n Divi-sionen durch 2, um u und k zu nden. (Zeile 1). (Wenn man benutzt, dass n norma-lerweise in Binärdarstellung gegeben sein wird, ist die Sache noch einfacher: k ist dieZahl der Nullen, mit der die Binärdarstellung von n − 1 aufhört, u ist die Zahl, diedurch den Binärstring ohne diese letzten Nullen dargestellt wird.) Die Berechnungvon au mod n mit schneller Exponentiation 3 benötigt O(log n) arithmetische Ope-rationen und O((log n)3) Bitoperationen (mit der Schulmethode für Multiplikationund Division). Die Schleife in Zeilen 58 wird höchstens k-mal durchlaufen; oenbar

30

Page 31: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

ist k ≤ log n. In jedem Durchlauf ist die Multiplikation modulo n die teuerste Ope-ration. Insgesamt benutzt der Algorithmus O(log n) arithmetische Operationen aufzahlen, die kleiner als n2 sind, und O((log n)3) Bitoperationen. Wenn man die Laufzeitmit dem Fermat-Test vergleicht, und dazu die Details der schnellen Exponentiationansieht, stellt man fest, dass die Multiplikationen modulo n in beiden Fällen exaktgleich aussehen, nur dass beim Miller-Rabin-Test unterwegs noch Zwischenergeb-nisse darauf getestet werden, ob sie gleich 1 oder gleich n− 1 sind dies verursachtkaum Mehraufwand.

Nun wenden wir uns dem Ein-/Ausgabeverhalten des Miller-Rabin-Tests zu.

Lemma 5.34. Wenn die Eingabe n für den Miller-Rabin-Test eine Primzahl ist, dann

wird 0 ausgegeben.

Beweis : Wir haben oben schon festgestellt, dass Ausgabe 1 genau dann erfolgt, wenndie zufällig gewählte Zahl a ein A-Zeuge ist. Nach Lemma 5.33(b) gibt es nur dannA-Zeugen, wenn n zusammengesetzt ist.

5.3.5 Fehlerschranke für den Miller-Rabin-Test

Wir müssen nun noch die Fehlerwahrscheinlichkeit des Miller-Rabin-Tests für denFall analysieren, dass n eine zusammengesetzte (ungerade) Zahl ist. Dies wird alsofür diesen Abschnitt angenommen.

Wir beweisen, dass die Wahrscheinlichkeit, dass der Miller-Rabin-Test die (uner-wünschte) Antwort 0 gibt, kleiner als 1

2ist. Dazu wollen wir ähnlich vorgehen wie bei

der Analyse des Fermat-Tests für Nicht-Carmichael-Zahlen (Beweis von Satz 5.29).Dort haben wir gezeigt, dass die F-Lügner für solche n eine echte Untergruppe von Z∗nbilden. Hier ist es etwas schwieriger, weil die Menge LA

n der A-Lügner keine Untergrup-pe von Z∗n bilden muss. Dies beheben wir dadurch, dass wir eine echte UntergruppeBAn von Z∗n nden, die alle A-Lügner enthält.

Wenn n keine Carmichael-Zahl ist, ist dies leicht.

Lemma 5.35. Sei n ≥ 3 zusammengesetzt. Dann gilt LAn ⊆ LF

n.

Beweis : Dies ist nur eine andere Formulierung von Lemma 5.33(a).

Wenn nun n keine Carmichael-Zahl ist, schlieÿen wir genau wie im Beweis vonSatz 5.29, dass der Anteil von A-Lügnern in 2, . . . , n− 2 kleiner als 1

2ist.

Es bleibt der Fall, dass n eine Carmichael-Zahl ist.

31

Page 32: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

a b0 b1 · · · bi0 · · · bk−1 bk

a1 = 1 1 1 · · · 1 1 1 · · · 1 1

a2 = n− 1 n− 1 1 · · · 1 1 1 · · · 1 1

a3 ∗ ∗ · · · ∗ n− 1 1 · · · 1 1

a4 ∗ ∗ · · · n− 1 1 1 · · · 1 1...

......

......

......

... 1 1

a au au·21 · · · au·2

i0−1au·2

i0 au·2i0+1 · · · au·2

k−11

......

......

......

......

......

a# ∗ ∗ · · · ∗ n− 1 1 · · · 1 1...

......

......

......

......

...

a? ∗? ∗? · · · ∗? ∗? · · · · · · · · · 1...

......

......

......

......

...

aϕ(n) ? ? · · · ? ? ? · · · ? 1

Tabelle 5: Sicht auf BA

n als Teilmenge von Z∗n

Wir denieren eine Menge BAn . Weil u ungerade ist, gilt

(n− 1)u·20 ≡ (n− 1)u ≡ (−1)u ≡ −1 ≡ n− 1 (mod n).

Sei i0 das gröÿte i ∈ 0, 1, . . . , k mit der Eigenschaft, dass es einen A-Lügner a# mitau·2

i

# mod n = n − 1 gibt. (Wir werden dieses a# weiter unten nochmals benutzen.)

Weil n eine Carmichael-Zahl ist, gilt au·2k

mod n = an−1 mod n = 1 für alle a ∈ Z∗n ,und daher 0 ≤ i0 < k. Wir denieren:

BAn = a ∈ Z∗n | au·2

i0 mod n ∈ 1, n− 1 . (8)

Zur Veranschaulichung betrachte man Abb. 5. In der dort angegebenen Matrix ent-spricht jede Zeile einem der ϕ(n) Elemente von Z∗n , beginnend mit a1 = 1 unda2 = −1 ≡ n − 1. In der Zeile für a ist die von a erzeugte Folge b0, . . . , bk einge-tragen. Dass n eine Carmichael-Zahl ist, drückt sich dadurch aus, dass alle Einträgein der bk-Spalte gleich 1 sind. Der Eintrag für a2 = −1 in der b0-Spalte ist n−1. Spalte

32

Page 33: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

i0 ist die am weitesten rechts stehende Spalte, in der es einen Eintrag −1 ≡ n − 1gibt, und a# ist ein Element von Z∗n , das zu diesem Eintrag führt. Die Menge BA

n

besteht aus den Elementen von Z∗n , die in Spalte i0 Eintrag 1 oder n − 1 haben. Wir wollen zeigen, dass diese Menge BA

n die gewünschten Eigenschaften hat.

Lemma 5.36.

(a) LAn ⊆ BA

n .

(b) BAn ist Untergruppe von Z∗n .

(c) Z∗n −BAn 6= ∅.

Beweis : (Teil (a) ist die Überprüfung, dass die Denition sinnvoll ist. Teil (b) istRoutine. Der interessante Teil ist (c).)(a) Sei a ein beliebiger A-Lügner.Fall 1: au mod n = 1. Dann ist auch au·2

i0 mod n = 1, und daher gilt a ∈ BAn . (Die

Zeile zu a in Abb. 5 sieht aus wie die von a1 = 1.)Fall 2: au·2

imod n = n − 1 für ein i < k. Dann ist 0 ≤ i ≤ i0 nach der Denition

von i0. Wenn i = i0 ist, haben wir direkt, dass a ∈ BAn (Beispiel: a3 oder a#); wenn

i < i0 ist, dann gilt

au·2i0 mod n = (au·2

i

mod n)2i0−i

mod n = 1,

also ebenfalls a ∈ BAn (Beispiel: a2 oder a4).

(b) Wir überprüfen die beiden Bedingungen von Fakt 5.28:

(i) 1 ∈ BAn , weil 1 ∈ Z∗n und 1u·2

i0 mod n = 1.

(ii) BAn ist unter der Gruppenoperation in Z∗n abgeschlossen: Seien a, b ∈ BA

n . Danngilt au·2

i0 mod n, bu·2i0 mod n ∈ 1, n−1. Weil 1·1 = 1, 1·(n−1) = (n−1)·1 =

n− 1 und (n− 1) · (n− 1) mod n = 1, haben wir

(ab)u·2i0 mod n = ((au·2

i0 mod n) · (bu·2i0 mod n)) mod n ∈ 1, n− 1.

Es folgt, dass ab mod n ∈ BAn gilt.

(c) Wir benutzen die in Lemma 5.31 beobachtete Eigenschaft von Carmichael-Zahlen,keine Primzahlpotenz zu sein. Nach diesem Lemma können wir n = n1 · n2 schreibenfür teilerfremde ungerade Zahlen n1, n2. Im Folgenden werden wir diese Zerlegungund die Eigenschaften aus dem Chinesischen Restsatz (Fakt 5.16) benutzen.

33

Page 34: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

Bei der nun folgenden Konstruktion geht es anschaulich um folgendes: Wir habeneinige a (z. B. a = 1) mit au·2

i0 mod n = 1 und einige a (z. B. a = a#) mit au·2i0 ≡ −1

(mod n). Wir wollen zeigen, dass es unmöglich ist, dass au·2i0 mod n ∈ 1, n− 1 für

alle a ∈ Z∗n gilt, dass also Spalte i0 auch einen Eintrag /∈ 1, n− 1 enthalten muss.Dazu basteln wir aus 1 und a# ein Gegenbeispiel a. Diese Zahl a soll sich modulon1 wie 1 verhalten, modulo n2 wie a#. Die u · 2i0-te Potenz modulo n einer solchenZahl a kann weder 1 noch −1 sein.

Wir führen diese Idee jetzt formal durch. Sei x2 = a# mod n2. Nach dem ChinesischenRestsatz (Fakt 5.16) gibt es eine eindeutig bestimmte Zahl a ∈ 0, 1, . . . , n− 1, die

a ≡ 1 (mod n1) und a ≡ x2 (mod n2) (9)

erfüllt. Wir zeigen, dass a in Z∗n −BAn liegt.

Beh. 1: a ∈ Z∗n .Bew.: Wir wissen, dass an−1 mod n1 = 1n−1 mod n1 = 1 und an−1 mod n2 = an−1# mod

n2 = ((an−1# ) mod n) mod n2 = 1 mod n2 = 1 gilt. Wegen der Eindeutigkeitsaussageim Chinesischen Restsatz folgt daraus an−1 mod n = 1. Das heiÿt, dass an−1−1 durchn teilbar ist. Daher muss ggt(n, a) = 1 sein, also a ∈ Z∗n .Beh. 2: au·2

i0 mod n 6= 1.Bew.: Indirekt. Annahme: au·2

i0 mod n = 1. Dann ist n Teiler von au·2i0 −1, also auch

n2 Teiler von au·2i0 − 1. Andererseits ist

au·2i0 mod n2 = au·2

i0

# mod n2 = ((au·2i0

# ) mod n) mod n2 = (n− 1) mod n2.

Also ist n2 Teiler von au·2i0 − (n− 1), also Teiler von au·2

i0 + 1. Daraus folgt, dass n2

Teiler von 2 ist, ein Widerspruch.

Beh. 3: au·2i0 mod n 6= n− 1.

Bew.: Indirekt. Annahme: au·2i0 mod n = n− 1. Dann ist n Teiler von au·2

i0 + 1, alsoauch n1 Teiler von au·2

i0 + 1. Andererseits ist

au·2i0 mod n1 = 1u·2

i0 mod n1 = 1.

Also ist n1 Teiler von au·2i0 − 1. Daraus folgt, dass n1 Teiler von 2 ist, ebenfalls ein

Widerspruch.

Damit ist der Beweis von Lemma 5.36(c) vollständig.

Beispiel 5.37. Wir betrachten die Zahl n = 325 = 13 · 25. (Für dieses Beispiel ist esnicht so wichtig, dass n keine Carmichael-Zahl ist.) In Tabelle 3 bemerken wir, dass

34

Page 35: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

der A-Lügner 32 die Gleichung 32162 mod 325 = 324 erfüllt (was −1 entspricht). Dieeindeutig bestimmte Zahl a mit a mod 13 = 32 mod 13 = 6 und a mod 25 = 1 ista = 201. Aus der Tabelle lesen wir ab, dass tatsächlich

201162 mod 325 = 51 /∈ 1, 324, und 201324 mod 325 = 1

gilt. (Man beachte, dass 51 ≡ 1 (mod 25) und 51 ≡ −1 (mod 13) gilt!) Insbesonderehaben wir mit 201 ein Element von Z∗325 gefunden, das nicht in BA

325 liegt.

Wir haben eine Schranke von 12für die Irrtumswahrscheinlichkeit im Miller-Rabin-

Algorithmus bewiesen. Eine etwas kompliziertere Analyse zeigt, dass sogar die Feh-lerschranke 1

4gilt; man kann auch zeigen, dass es zusammengesetzte Zahlen n gibt

(es handelt sich um gewisse Carmichael-Zahlen), bei denen eine Fehlerwahrschein-lichkeit von fast 1

4tatsächlich auftritt. Durch `-fache Wiederholung, ebenso wie in

Algorithmus 5.7, kann man die Fehlerschranke auf 4−` reduzieren. Wir kürzen denMiller-Rabin-Test mit MiRa-Test ab. Man beachte, dass bei jedem neuen Aufrufeine neue Zufallszahl a gewählt wird.

Algorithmus 5.9 (Iterierter MR-Test).

Eingabe: Ungerade Zahl n ≥ 5, eine Zahl ` ≥ 1.Methode:

1 repeat ` times

2 if MiRa-Test(n) = 1 then return 1;3 return 0;

Diesen Test wollen wir kurz IterMiRa(n, `) nennen. Wir erhalten zusammenfassend:

Proposition 5.38. Algorithmus 5.9 benötigt O(` · log n) arithmetische Operationen

auf zahlen, die kleiner als n2 sind, und O(` · (log n)3) Bitoperationen. Wenn n eine

Primzahl ist, ist die Ausgabe 0, wenn n zusammengesetzt ist, ist die Wahrscheinlich-

keit, dass 0 ausgegeben wird, kleiner als 4−`.

35

Page 36: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

5.4 Die Erzeugung von Primzahlen

Für kryptographische Anwendungen (zum Beispiel für die Erzeugung von Schlüssel-paaren für das RSA-Public-Key-Kryptosystem) werden vielzirige Primzahlen benö-tigt. Eine typische Aufgabe in diesem Zusammenhang könnte lauten:

Finde eine zufällige Primzahl mit µ Bits!

Dabei hängt µ von der Anwendung ab; wir können uns z. B. µ = 512 oder µ = 2048sein. (Natürlich ist so eine riesengroÿe Zahl nicht als Anzahl von etwas gedacht, son-dern als mathematisches Objekt, das für die Kryptographie nützliche Eigenschaftenhat.)

Können wir damit rechnen, so eine Primzahl leicht zu nden? Wir wissen natürlich,dass es unendlich viele Primzahlen gibt. Aber gibt es genügend viele so groÿe Prim-zahlen? Der Primzahlsatz, der in der Zahlentheorie bewiesen wird, sagt, dass dies soist. Mit π(x) bezeichnen wir die Anzahl der Primzahlen, die nicht gröÿer als x ist.

Satz 5.39 (Primzahlsatz).

limx→∞

π(x)

x/ lnx= 1.

Das heiÿt, dass für groÿe x in (x, 2x] etwa 2xln(2x)

− xlnx≈ x

lnxPrimzahlen zu erwarten

sind. Die µ-zirigen Zahlen bilden das Intervall [2µ−1, 2µ). Der Anteil der Primzahlenin diesem Intervall ist näherungsweise

2µ−1/ ln(2µ−1)

2µ−1≈ 1

(ln 2)(µ− 1)≈ 1,44/µ.

Für µ ≈ 2000 ist der relative Anteil von Primzahlen im interessanten Zahlenbereichalso etwa ≈ 1,44/2000 ≈ 1/1400. Er sinkt umgekehrt proportional zur Ziernzahl.

Für unsere Zwecke etwas angenehmer zu benutzen als der Primzahlsatz ist folgendeetwas schwächere Aussage, die konkrete Konstante angibt:

Satz 5.40 (Ungleichung von Finsler). Für jede ganze Zahl m ≥ 2 liegen im Intervall

(m, 2m] mindestens m/(3 ln(2m)) Primzahlen:

π(2m)− π(m) ≥ m

3 ln(2m).

Beispiele:

36

Page 37: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

Ziernzahl Finsler-Schranke für numerische

µ m (π(2m)− π(m))/m untere Schranke

256 2255 13·256·ln 2

1533

512 2511 13·512·ln 2

11065

1024 21023 13·1024·ln 2

12130

2048 22047 13·2048·ln 2

14260

Eine Verdopplung der Ziernzahl halbiert die untere Schranke für die Primzahldichte.

Ein naheliegender Ansatz zur Erzeugung einer zufälligen Primzahl in [m, 2m) ist nunfolgender: Man wählt wiederholt eine (ungerade) Zahl aus [m, 2m) zufällig und wendetauf sie den Miller-Rabin-Test an. Dies wiederholt man, bis eine Zahl gefunden wurde,die die Ausgabe 1 liefert.

Algorithmus 5.10 (GetPrime Randomisierte Primzahlerzeugung).

Eingabe: Zahl m ≥ 2, Zahl ` ≥ 1 (∗ Zuverlässigkeitsparameter ∗).Methode:

1 repeat

2 n← zufällige ungerade Zahl in [m, 2m);3 until IterMiRa(n, `) = 0; (∗ Algorithmus 5.9 ∗)4 return n.

Die Ausgabe ist korrekt, wenn er eine Primzahl zurückgibt, ein Fehler tritt auf, wenneine zusammengesetzte Zahl zurückgegeben wird. Auf den ersten Blick könnte manmeinen (aufgrund von Proposition 5.38), dass die Fehlerwahrscheinlichkeit höchstens1/4` ist eben die Fehlerwahrscheinlichkeit des iterierten MiRa-Tests. Wir werdensehen, dass wir auf der Basis der Analyse des Miller-Rabin-Tests nur ein etwas schwä-cheres Ergebnis bekommen.4

Wir denieren: Primm := p ∈ [m, 2m) | p ist Primzahl.Satz 5.41. Bei der Anwendung von Algorithmus 5.10 auf eine gerade Zahl m gilt :

(a) Für jedes p ∈ Primm gilt :

Pr(GetPrime(m, `) = p | GetPrime(m, `) ∈ Primm) =1

|Primm|.

4Tatsächlich ist die Fehlerwahrscheinlichkeit durch 1/4` beschränkt. Dies kann man aber nurdurch sehr fortgeschrittene zahlentheoretische Untersuchungen über das Verhalten einer zufälligenungeraden Zahl beim Miller-Rabin-Test beweisen.

37

Page 38: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

In Worten: Jede Primzahl in [m, 2m) hat dieselbe Wahrscheinlichkeit, als Er-

gebnis zu erscheinen.

(b)

Pr(GetPrime(m, `) /∈ Primm) ≤ 3 ln(2m)

2 · 4`= O

(logm

4`

).

((!) Nicht 1/4`, wie naiv vermutet.)

(c) Die erwartete Rundenzahl ist ≤ 32

ln(2m), der erwartete Rechenaufwand ist

O((log n)2) arithmetische Operationen und O((log n)3) Bitoperationen.

Beweis : (a) Eine Primzahl wird als Resultat genau dann geliefert, wenn keine zusam-mengesetzte Zahl fälschlicherweise vom Miller-Rabin-Test akzeptiert wird, bevor (inZeile 2) die erste echte Primzahl gewählt wird. Jede der Primzahlen in [m, 2m) hatdieselbe Wahrscheinlichkeit, diese erste gewählte Primzahl zu sein.

(b)

Pr(GetPrime(m, `) /∈ Primm)

= Pr(∃i ≥ 1: in Runden j = 1, . . . , i− 1 wird eine

zusammengesetzte Zahl gewählt und erkannt ∧in Runde i wird zusammengesetzte Zahl n gewählt

und der iterierte MiRa-Test auf n liefert 0)

≤∑i≥1

(1− |Primm|

m/2

)i−1· 1

4`

=m/2

|Primm|· 1

4`

≤ 3 ln(2m)

2 · 4`.

Wir haben benutzt, dass es in [m, 2m) genaum/2 ungerade Zahlen gibt (m ist gerade).Die letzte Ungleichung folgt aus der Ungleichung von Finsler (Satz 5.40).

(c) Da man in jeder Runde mit Wahrscheinlichkeit mindestens |Primm|m/2

eine Primzahl

wählt, ist die erwartete Rundenzahl nicht gröÿer als m/2|Primm| = O(logm).

Bemerkung: Bei der Erzeugung zufälliger Primzahlen für kryptographische Zweckewird man aus Ezienzgründen nicht unseren Algorithmus anwenden, der (log n)2

38

Page 39: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

Multiplikationen benötigt, sondern eine Kombination zweier verschiedener Primzahl-tests (z. B. Miller-Rabin und Lucas-Lehmer) mit sehr wenigen Iterationen dies er-fordert nur O(log n) Multiplikationen. Dies ist dadurch gerechtfertigt, dass die Dichteder zusammengesetzten Zahlen, die von einem solchen Test nicht erkannt werden, alssehr gering einzuschätzen ist. Über eine interessante experimentelle Untersuchunghierzu berichtet die kurze Notizpeople.csail.mit.edu/rivest/Rivest-FindingFourMillionLargeRandomPrimes.ps

von Ron Rivest (bekannt von RSA und von Cormen, Leiserson, Rivest und Stein).

39

Page 40: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

A Beweise und Bemerkungen für Abschnitt 5.1

Bemerkung A.1 (zu Fakt 5.2). Wenn man es genau nimmt, sind die Elemente vonZm nicht Zahlen, sondern Äquivalenzklassen

[a] = qm+ a | q ∈ Z, für 0 ≤ a < m,

zur Äquivalenzrelation

x ≡ y (mod m), (auch: x ≡ y(m) oder x ≡m y ),

die durch m ist Teiler von x − y deniert ist (vgl. Fakt. 5.4). Die Operationenwerden auf den Repräsentanten ausgeführt, zum Beispiel gilt in Z11, dass [4] + [7] =[11] = [0] ist, also sind [4] und [7] zueinander invers. Allgemeiner gilt in jedem Zmdie Gleichheit [a] + [m − a] = [m] = [0], d. h., [m − a] ist das additive Inverse −[a]zu [a]. Multiplikativ gilt in Zm, dass [1] neutrales Element ist, und dass [1] · [1] = [1]und [m − 1] · [m − 1] = [m(m − 2) + 1] = [1], also [1] und −[1] = [m − 1] (triviale)Quadratwurzeln der 1 sind.

Es ist bequem, die eckigen Klammern wegzulassen und für [i] einfach i zu schreiben.Man muss dann nur aufpassen, dass man Ausdrücke wie −1 richtig interpretiert,nämlich als das additive Inverse von 1 in Zm, also [m− 1].

Beweis von Lemma 5.8: (a) Betrachte die Menge D = xm + yn | x, y ∈ Z. Weilm2 + n2 > 0 eine Zahl in D ist, hat D ein kleinstes positives Element c. Wir wollenzeigen, dass c = 1 ist. Dazu wählen wir x, y so, dass c = xm+ yn gilt und schreibenn = qc+ r mit 0 ≤ r < c. Dann ist

r = n− qc = n− qxm− qyn = (−qx)m+ (1− qy)n,

also ist r ∈ D. Nach Wahl von c kann aber r nicht positiv sein, also folgt r = 0.Daraus folgt n = qc, also ist n durch c teilbar. Ganz genauso sieht man, dass auch mdurch c teilbar ist. Weil m und n teilerfremd sind, muss c = 1 sein.

(b) Es sei d = ggt(m,n). Wir denieren m′ = m/d und n′ = n/d. Natürlich sind m′

und n′ teilerfremd (sonst wäre d nicht der gröÿte gemeinsame Teiler von m und n).Nach Teil (a) gibt es x, y mit xm′+yn′ = 1. Daraus folgt xm+ym = xm′d+yn′d = d.

Beweis von Lemma 5.10:⇒: Es sei ab mod m = 1. Das heiÿt: Es gibt ein q ∈ Z mit ab− qm = 1. Wenn nun

40

Page 41: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

eine Zahl d > 0 sowohl a als auch m teilt, dann teilt d auch ab − qm = 1, also istd = 1. Also sind a und m teilerfremd.

⇐: a und m seien teilerfremd. Nach Lemma 5.8(a) gibt es x, y ∈ Z mit xa+ym = 1.Setze b := x mod m. Dann gilt:

(a · b) mod m = (a · (x mod m)) mod m = ax mod m = 1,

d. h. b ist ein multiplikatives Inverses von a.

Beweis von Fakt 5.12: Natürlich ist die 1 das neutrale Element der Multiplikationin Zm und in Z∗m. Wir bemerken zuerst, dass Z∗m unter Multiplikation modulo mabgeschlossen ist: Seien a und c zu m teilerfremd. Nach Lemma 5.8(a) kann man1 = xa+ ym = zc+ um schreiben, und erhält daraus

1 = (xa+ ym)(zc+ um) = (xz)(ac) + (xau+ yzc+ yum)m.

Wieder nach Lemma 5.8(a) folgt daraus, dass ac und m teilerfremd sind.

Nach Lemma 5.10 hat jedes Element von Z∗m ein multiplikatives Inverses b ∈ Zm.Weil natürlich a auch das Inverse von b ist, folgt nach Lemma 5.10 auch, dass b ∈ Z∗mist.

Beweis von Proposition 5.13:⇒: Seim eine Primzahl. Dann ist jedes a ∈ 1, . . . ,m = Zm−0 zum teilerfremd;nach der Denition folgt Z∗m = Zm − 0.⇐: Sei m eine zusammengesetzte Zahl, etwa durch k mit 2 < k < m teilbar. Dannist k = ggt(k,m) > 1, also kann k nach Lemma 5.10 kein multiplikatives Inversesmodulo m haben. (Man sieht auch direkt, dass kb mod m = kb− qm durch k teilbarist, also für kein b gleich 1 sein kann.)

Beweis von Proposition 5.22:

(a) Nach dem kleinen Satz von Fermat (Fakt 5.14) gilt ap−1 mod p = 1 für jedesa ∈ Z∗p . Daraus: (

a(p−1)/2 mod p)2

mod p = 1 für jedes a ∈ Z∗p .

Mit Lemma 5.20 folgt a(p−1)/2 mod p ∈ 1,−1 ⊆ Z∗p .(b) Wir denieren A := a ∈ Z∗p | a(p−1)/2 mod p = 1. Unser Ziel ist zu zeigen, dassQRp = A ist. Die eine Inklusion ist leicht zu sehen:

Beh. 1: QRp ⊆ A. (Wenn a ∈ QR(p), also a = b2 mod p für ein b, dann gilt

(a(p−1)/2 mod p) mod p = ((b2)(p−1)/2 mod p) mod p = bp−1 mod m = 1,

41

Page 42: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

also ist a ∈ A, wieder nach dem kleinen Satz von Fermat.)

Für die Umkehrung benutzen wir ein Kardinalitätsargument.

Beh. 2: |QRp| = 12(p − 1). Dies gilt, weil nach Lemma 5.21 jeder quadratische Rest

genau zwei verschiedene Quadratwurzeln hat und natürlich jede der p− 1 Zahlen inZ∗p Quadratwurzel ist.

Beh. 3: |A| ≤ 12(p − 1). (Nach Fakt 5.19 (mit s = 1

2(p − 1)) gilt, dass höchstens

12(p− 1) viele Elemente von Z∗p die Gleichung a(p−1)/2 mod p = 1 erfüllen.)

Aus Beh. 1, 2 und 3 folgt sofort QRp = A, wie gewünscht.

Beweis von Fakt 5.15: Weil m und n Teiler von a sind, kann man a = um und a = vnschreiben, für ganze Zahlen u, v. Weil m und n teilerfremd sind, kann man nach demLemma von Bezout (Lemma 5.8) 1 = ggt(m,n) = xm + yn schreiben, für ganzeZahlen x, y. Dann ist

a = axm+ ayn = vnxm+ umyn = (vx+ uy)mn,

was zu zeigen war.

B Quadratwurzeln modulo p, alternativer Algorith-

mus

Wir betrachten hier den Fall, dass p− 1 durch 4 teilbar ist. Nach Prop. 5.24 ist dasProblem des Quadratwurzelziehens für die anderen p leicht deterministisch zu lösen.

Algorithmus B.1 (Quadratwurzeln, randomisiert).Input: Primzahl p mit p− 1 durch 4 teilbar;

a ∈ 1, . . . , p− 1 mit a(p−1)/2 mod p = 1.Methode:

(∗ Finde b ∈ Z∗p −QRp: ∗)1 repeat

2 b := Zufallszahl in 2, . . . , p− 23 until b(p−1)/2 mod p = p− 1;

4 Schreibe 12(p− 1) = u · 2k, u ungerade, k ≥ 1;

(∗ Berechne s0, . . . , sk gerade mit au·2k−i · bsi mod p = 1: ∗)

5 s := 0;6 for i from 1 to k do

42

Page 43: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

7 if au·2k−i · bs/2 mod p = 1

8 then s := s/29 else s := s/2 + (p− 1)/2;10 return a(u+1)/2 · bs/2 mod p.

Erklärung, Korrektheitsbeweis, Zeitanalyse: Wir setzen voraus, dass ein vorabdurchgeführter Quadratzahltest (Algorithmus 5.4) ergeben hat, dass

a(p−1)/2 mod p = 1 (10)

ist und daher a in Zp eine Quadratwurzel besitzt. In Zeilen 13 wird mit randomi-sierter Suche eine Zahl b ∈ Z∗p gesucht, die kein quadratischer Rest ist. Weil (p−1)/2

gerade ist, ist (−1)(p−1)/2 mod p = 1, also −1 ein quadratischer Rest; wir müssenalso 1 und p − 1 gar nicht testen. Unter den p − 3 Zahlen in 2, . . . , p − 2 sindgenau 1

2(p − 1) viele Nichtquadrate; das ist mehr als die Hälfte, also wird nach ei-

ner erwarteten Rundenzahl von < 2 ein passendes b gefunden. (Da der Rest desAlgorithmus deterministisch ist, handelt es sich insgesamt um einen lupenreinen Las-Vegas-Algorithmus.)

Bemerkung: In Kapitel 4.1 haben wir ein randomisiertes Suchverfahren betrachtet,das in einer Menge A mit einer nichtleeren Teilmenge B, die nur indirekt, durch einenTest ist x ∈ B? gegeben ist, ein Element von B sucht.

Man beachte, dass das in Zeilen 13 gelöste Problem, ein Element der Menge Z∗p−QRp

zu nden, genau dieser Aufgabenstellung entspricht:

- A ist Z∗p ;

- B ist Z∗p −QRp;

- der Test ist b ∈ Z∗p−QRp? wird in Zeile 3 durchgeführt (Eulersches Kriterium).

Die Menge G hat Dichte etwas gröÿer als 12in Z∗p . Man beachte, dass tatsächlich,

wie in Kapitel 4 abstrakt angenommen, keine explizite Darstellung von Z∗p − QRp

bekannt ist.

Zu Zeile 4: Weil p−1 durch 4 teilbar ist, ist 12(p− 1) gerade, hat also eine Darstellung

wie angegeben. Startend in Zeile 5 berechnen wir in der Variablen s eine Folges0, s1, . . . , sk mit folgender Eigenschaft:

au·2k−i · bsi mod p = 1 und si ist gerade . (11)

43

Page 44: 5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie · Stand: 29.12.2012 orlesungV Randomisierte Algorithmen Dietzfelbinger 5 Randomisierte Algorithmen für Probleme aus

Die Eigenschaft (11) beweisen wir durch Induktion über die Schleifendurchläufe i =0, 1, . . . , k.i = 0: s0 = 0 ist gerade und au·2

k · b0 mod p = a(p−1)/2 mod p = 1, wegen (10).0 ≤ i < k, i→ i+ 1: Nach Induktionsvoraussetzung gilt (11) für i. Wir betrachtenSchleifendurchlauf i+ 1. In Zeile 7 wird berechnet:

f := au·2k−(i+1) · bsi/2 mod p.

Die Zahl f ist eine Quadratwurzel von 1, denn f 2 mod p = au·2k−i · bsi mod p = 1

(nach (11) für i). Daher gilt f ∈ 1,−1. Diese beiden Fälle werden in Zeilen 79betrachtet.

1. Fall: f = 1. Dann wird si+1 = si/2, und au·2k−(i+1) · bsi+1 mod p = f = 1.

2. Fall: f = −1. Dann wird si+1 = si/2 + (p− 1)/2, und

au·2k−(i+1) · bsi+1 mod p = f · b(p−1)/2 mod p = (−1) · (−1) mod p = 1.

(Wir benutzen hier, dass b kein quadratischer Rest ist, also b(p−1)/2 mod p = −1 ist.)

Es fehlt nur noch der Nachweis, dass si+1 gerade ist. Annahme: si+1 ungerade. Danngilt:

au·2k−(i+1) · bsi+1 mod p = 1.

Dabei ist die rechte Seite (die Zahl 1) ein quadratischer Rest, ebenso wie au·2k−(i+1)

modp. Der Faktor bsi+1 mod p hingegen ist als ungerade Potenz von b /∈ QRp nicht in QRp.Dies ist ein Widerspruch zu Korollar 5.23.

In Zeile 10 des Algorithmus wird die Zahl t = a(u+1)/2 · bsk/2 mod p als Ergebnisausgegeben. Wir berechnen:

t2 mod p = au+1 · bsk mod p = a · (au · bsk) mod p = a,

wobei wir (11) (für i = k) angewendet haben. Daher ist t eine Quadratwurzel von a.

Laufzeit: Es werden maximal log p Runden durchgeführt; in jeder Runde ist eineschnelle Exponentiation mit O(log p) Multiplikationen modulo p durchzuführen. DieAnzahl der Multiplikationen und Divisionen ist also O((log p)2), die Anzahl der Bit-operationen O((log p)4).

44