Effiziente Algorithmen für den Primzahltest Sommersemester 2009 Beate Bollig Informatik LS2 Dass die Aufgabe, die Primzahlen von den ” zusammengesetzten zu unterscheiden [. . . ] zu den wichtigsten und nützlichsten der gesamten Arithmetik gehört [. . . ] ist so bekannt, dass es überflüssig wäre, hierüber viele Worte zu verlieren. “ Carl Friedrich Gauß (1801) 1 (Falsche) Vermutung NP P PRIMES NPC 2 Primzahltest PRIMES Über 2000 Jahre offen, ob besserer Primzahltest für n existiert, als n durch alle Zahlen die höchstens n1/2 sind zu dividieren 17. Jahrhundert: kleiner Satz von Fermat → effizienterer Primzahltest Problem: Carmichaelsche Zahlen Pratt 1975: PRIMES ∈ NP 3 Primzahltest PRIMES (Fortsetzung) Miller 1976: det. polynomieller Prinzahltest unter Annahme der erweiterten Riemannschen Hypothese Rabin 1980: Modifikation → PRIMES ∈ co-RP Miller-Rabin Test u.a. in Maple und Mathematica Solovay, Strassen 1977 Adleman, Pomerance, Rumely 1983: deterministischer superpolynomieller Primzahltest O(log nlog log log n ) Adleman, Huang 1992: PRIMES ∈ RP, PRIMES ∈ ZPP 4 Starke Vermutung vor 2002: PRIMES nicht NP-vollständig, aber: PRIMES ∈ P? Agrawal, Kayal, Saxena 2002: “PRIMES is in P” Durchbruch in der mathematischen Welt: Laufzeit zunächst O(log12 n) Idee: Erweiterung des kleinen Satzes von Fermat auf Polynomringe 5 God may not play dice with the universe but something strange is going on with the prime numbers. Paul Erdös One reason for the excitement within the mathematical community is not only does this algorithm settle a longstanding problem, it also does so in a brilliantly simple manner. Everyone is now wondering what else has been similarly overlooked. P. Leyland 6 Primzahlen Definition: Primzahl = ˆ natürliche Zahl mit genau 2 Teilern 1? Nein (wichtig für eindeutige Primfaktorzerlegung) 2, 3, 5, 7, 11, |{z} | {z13,} 17, | {z19,} 23, 29, | {z31,} 37 |{z} Primzahlzwillinge 827902375? Nein, 5 ist Teiler 14351? Nein, 13×127 = 14351 ր einfach 7 Eindeutige Primfaktorzerlegung Beispiel: Zahlensystem Euklid √ A + B 5 տ ր ganze Zahlen 4=2 ∗2 √ √ 4 = 1 + 5 −1 + 5 → Eindeutigkeit nicht selbstverständlich Schlüsselaussage: P Primzahl und P teilt A · B, dann teilt P die Zahl A oder B 8 Annahme: P teilt B nicht, B = CP + R P teilt AB → P teilt A(CP + R) = ACP + AR → P teilt AR = PK տ ganze Zahl → P/A = R/K R<P → P/A kann gekürzt werden → P teilt A 9 Jetzt: eindeutige Primfaktorzerlegung einfach Sei P Primfaktor von N, also N = P · K Sei Q weiterer Primfaktor von N, Q 6= P, dann teilt Q die Zahl K etc. 10 Primzahlen Wieviele? Bereits vor ca. 2300 Jahren: es gibt keine größte Primzahl Euklid (Widerspruchsbeweis) Annahme: k ∈ N Primzahlen p1 , . . . , pk Betrachte p1 ∗ · · · ∗ pk + 1 11 Public-Key-Kryptographie Problem: Senden einer verschlüsselten Nachricht ohne sich zuvor auf Code geeinigt zu haben Rivest, Shamir, Adleman (1978) • Wähle 2 sehr große Primzahlen P und Q (technische Anforderung P − 1 6≡ 0 mod 3 Q − 1 6≡ 0 mod 3 ) • N: = P · Q versenden • Nachricht X mit X < N , ggT(X , N) = 1 Y = (X 3 mod N) verschicken 12 • X entschlüsseln N = P · Q, X teilerfremd zu N (P, Q Primzahlen) → X 1+(P−1)(Q−1) ≡ X mod N (P − 1)(Q − 1) nicht durch 3 teilbar → 1 + (P − 1)(Q − 1) ≡ 0 mod 3 oder 2 + (P − 1)(Q − 1) ≡ 0 mod 3 Sei 1 + (P − 1)(Q − 1) ≡ 0 mod 3 Y 1+(P−1)(Q−1) 3 1+(P−1)(Q−1) 3 ≡ X3 ≡ X mod N mod N 13 Repeated Squaring Y2 2 Y2 Y4 2 = Y4 = Y8 .. . Binärdarstellung von C: ck · · · c0 C ′ = {ci |ci = 1, 0 ≤ i ≤ k } Q Y2 i ci ∈C ′ 14 Effiziente Methode für Faktorisierung → RSA-System gebrochen Problem: Wahl von Primzahlen Hinreichend viele Primzahlen: ր nicht zuviele Versuche • zufällige Erzeugung großer Zahlen • Test, ob Primzahl Problem: Primzahltest (n) Sieb des Eratosthenes 3. Jh. v. Chr. √ Für r = 2, . . . , n prüfen, ob r |n Falls ja → r kleinster Primteiler von n sonst n Primzahl 15 Primzahlen per Zufall suchen? • in Anwendungen nur sinnvoll, wenn nicht zu viele Zufallszahlen getestet werden müssen • hilfreiche Erkenntnis aus Zahlentheorie: Primzahlsatz: Hadamard / de la Vallée Poussin (1896) lim x→∞ π(x) =1 x/ ln x π(x) = ˆ # Primzahlen bis x 16 Muster Welche Primzahlen können als Summe 2er Quadratzahlen dargestellt werden ? 2 Ja 3 Nein 5 Ja 7 Nein 12 + 12 22 + 12 als Summe 2er Quadrat– 11 Nein 13 Ja Primzahl P kann zahlen geschrieben werden, 32 + 22 g.d.w. P ≡ 1 mod 4 oder P ≡ 2 mod 4 17 Muster Welche geraden Zahlen können als Summe 2er Primzahlen geschrieben werden ? 2 Nein 4 Ja 6 Ja 8 Ja 10 Ja 12 Ja 2+2 Goldbachs Vermutung: 5+3 Jede gerade Zahl größer als 2 kann als Summe 2er Primzahlen geschrieben werden. 3+3 7 + 3, 5 + 5 7+5 Offen seit 1742 18 Muster 5: 2· 5 + 1 = 11 11: 2·11 + 1 = 23 23: 2·23 + 1 = 47 29: 2·29 + 1 = 59 Sophie Germain Primzahlen q ≥ 3 2q + 1 Vermutung: Hardy, Littlewood (1922) |{q ≤ x: q und 2q + 1 Primzahlen}| ∼ 2c · x ln2 x mit c = 0, 6601618158 Primzahlzwillingskonstante 19 Vermutung richtig → ∃ q, r ∈ O(log2 n), r = 2q + 1 für AKS-Algorithmus → Laufzeit Õ(log6 n) Vermutung bis x = 1010 bestätigt 20 Pascalsche Dreieck 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 8 1 1 8 3 5 7 6 15 1 4 10 20 35 56 1 3 10 21 28 2 4 6 1 5 15 35 70 1 1 6 21 56 1 7 28 1 8 1 21 Unterschied zwischen Primzahl-Zeilen“ und ” Nicht–Primzahl–Zeilen“ ? ” N Primzahl −→ außer 1 nur Vielfache von N Begründung: N K = N! N(N − 1) · . . . · (N − K + 1) = K !(N − K )! K (K − 1) · . . . · 1 ր teilbar durch N, denn N im Zähler, alle Zahlen im Nenner kleiner als N 22 N zusammengesetzt: N = P · K ր Primzahl(potenz) P, K teilerfremd N P = N(N − 1) · · · · · (N − P + 1) P(P − 1) · · · · · 1 = 6PK (PK − 1) · · · · · (PK − P + 1) 6P (P − 1) · · · · · 1 Kein Vielfaches von P −→ Kein Vielfaches von N 23 (Primitiver) Primzahltest Eingabe: N Betrachte N–te Zeile im Pascalschen Dreieck Außer 1, nur Vielfache von N −→ N Primzahl sonst N zusammengesetzt Effizient? Nein, N–te Zeile im PD enthält N + 1 Zahlen 24 Suche nach geeigneter Zeugenart, zum effizienten Beweis, dass n keine Primzahl ist Anforderung: Zeuge ω (i) n keine Primzahl“ effizient mittels ω nachweisbar ” (ii) für jeden Zeugenkandidaten ω effizient überprüfbar, ob ω Zeuge (iii) Menge der Zeugenkandidaten so spezifiziert, dass Zeugen häufig Versuch: a ∈ {2, . . . , n − 1} Zeuge für n keine Primzahl “ ” g.d.w. a | n :-( (iii) 25 Kleiner Satz von Fermat: Sei P eine Primzahl und a eine natürliche Zahl mit a 6≡ 0 mod P. Dann gilt aP−1 ≡ 1 mod P. • a=1X • Sei aP−1 ≡ 1 mod P → aP ≡ a mod P P P a+1 (a + 1)P = aP + aP−1 + · · · + P − 1 1 ≡ aP + 1 ≡ a + 1 mod P 26 kleiner Satz von Fermat −→ a ∈ {1, 2, . . . , n − 1} Zeuge für n keine Primzahl “ ” g.d.w. an−1 6≡ 1 mod n Vorteil: Berechnungen mod n Aber: Carmichaelsche Zahlen N Für alle zu N teilerfremden Zahlen a: aN−1 ≡ 1 mod N Beispiel: 561 = 3 × 11 × 17 (kleinste Carmichaelsche Zahl) 27 Manindra Agrawal, Neeraj Kayal, Nitin Saxena (2002) PRIMES ∈ P ∀X : (X + a)n ≡ X n + a mod n ⇔ n Primzahl ր teilerfremd zu n Erinnerung: Pascalsches Dreieck n k ⇔ durch n teilbar für alle k mit k 6= 1, k 6= n n Primzahl 28 Idee: Beschleunigung durch Berechnung modulo eines Polynoms (X r − 1), r hinreichend kleine“ Primzahl ” n Primzahl: (X + a)n ≡ (X n + a) mod (n, X r − 1) X Aber: n (X + a)n ≡ (X + a) mod n jedoch (X + a)n ≡ (X n + a) mod (n, X r − 1) möglich 29 AKS verwendet relativ einfache algebraische Argumente, mit durchschnittl. Kenntnissen der Zahlentheorie nachvollziehbar überraschend elegant This algorithm is beautiful“. ” Carl Pomerance It’s the best result I’ve heard in over 10 years“. ” Shafi Goldwasser 30 AKS Reicht Primzahl r zu betrachten, so dass r − 1 mindestens einen großen Primfaktor enthält, der Ordnung von n modulo r teilt Dann (∗) (X − a)n ≡ X n − a in R = Zn [X ]/(X r − 1) für alle kleinen “ a, g.d.w. n Primzahlpotenz ” 1) Überprüfe, ob n eine k -te Potenz (k ≥ 2) einer Zahl 2) Suche geeignetes r (u.U. Ergebnis n keine Primzahl) 3) Teste für alle a zwischen 1 und geeigneter Schranke s, ob a und n teilerfremd und (∗) gilt 31 Kernaussage: n zusammengesetzt: richtige Wahl“ von r ” → nur wenige as ausprobieren bis n r ≡ (X + 1)n (X + a) mod (n, X − 1) Wahl der as deterministisch möglich Theorem Fouvry: richtige Wahl von r effizient möglich ր einzige komplizierte Aussage 32 Fouvry 1985, Korrektur 1996: benutzt tiefe Methoden aus analytischer Zahlentheorie, nicht einfach Abschätzung im Detail zu verstehen Haben AKS sich der Mühe unterzogen? We tried! But Sieve theory was too dense for us - we have ” no background in analytical number theory. So after a while we just gave up. “ 33 Überblick über Vorlesung • Exkurs Zahlentheorie • Exkurs Abstrakte Algebra: Gruppen, Ringe, Körper • Miller–Rabin–Test • Solovay–Strassen–Test • Noch einmal Abstrakte Algebra: Polynome, Körper • AKS–Test • ··· 34 Komplexität von Algorithmen • Erweiterung der O-Notation für Funktionen über 2 Var. g(n, m) = O(f (n, m)) ∃C > 0, n0 , m0 ∀n ≥ n0 und m ≥ m0 : g(n, m) ≤ C · f (n, m) • Addition von O-Termen P Wenn g(n, i) = O(f (n, i)), G(n, m) = g(n, i) 1≤i≤m P f (n, i), und F (n, m) = 1≤i≤m dann G(n, m) = O(F (n, m)). √ 2 • log n log log n, log3/2 n, 2(log log n) , 2 log n , n3/4 , logn n 35 Oft logarithmische Faktoren vernachlässigbar: Definition: f :N → R+ mit lim f (n) = ∞: n→∞ Õ(f ) = {g | g : N → R+ , ∃C > 0 ∃n0 ∃k ∀n ≥ n0 : g(n) ≤ C · f (n) logk f (n) } 36 Fakt: n, m ∈ N a) Addition / Subtraktion von n und m in O( knk +kmk) = O(log n + log m) Bit-Operationen |{z} տ Länge Binärdarstellung von n b) Multiplikation Verbesserung: O(log n · log m) Bit–Operationen max{knk, kmk} ≤ k O(k log k log log k ) = Õ(k ) c) n div m, n mod m O((log n − log m + 1) log m) Bit–Operationen 37 Ziel: an mod m Repeated squaring i • Berechnung si ≡ a2 mod m, i ≥ 0 s0 ≡ a mod m 2 si ≡ si−1 mod m, i ≥ 1 → knk Multiplikationen Divisionen • n= k P i=0 bi 2i → an mod m = → knk Multiplikationen Divisionen Q 0≤i ≤k bi = 1 si mod m 38 Ziel: Binärdarstellung von n b0 = 1 ⇔ n ungerade b1 = 1 ⇔ ⌊ n2 ⌋ ungerade Algorithmus 2.3.3: Schnelle Exponentiation mod m Eingabe: a, n ∈ N, m ≥ 1 0 u, s, c, ∈ N 1u←n 2 s ← a mod m 3c←1 4 while u ≥ 1 repeat 5 if u ungerade then c ← c · s 6 s ← s · s mod m 7 u ← u div 2 8 return c mod m 39 Beispiel: Binärdarstellung von n i 0 1 2 3 4 5 6 7 8 9 10 11 12 si 21 22 42 162 542 882 682 792 802 372 562 52 252 m = 101 a=2 mod mod mod mod mod mod mod mod 101 101 101 101 101 101 101 101 mod 101 bi = = = = = = = = = = = = = 2 4 16 54 88 68 79 80 37 56 5 25 19 1 0 0 0 0 1 1 1 0 0 0 0 1 1000011100001 ci = Q j a2 mod m 0≤j≤i,bj =1 2 · 68 35 · 79 38 · 80 mod 101 = mod 101 = mod 101 = 10 · 19 mod 101 = 2 2 2 2 2 35 38 10 10 10 10 10 89 n = 4321 40 Lemma 2.3.4: Berechnung an mod m mit O(log n) Multiplikationen, Divisionen von Zahlen aus {0, . . . , m2 − 1} und O(log n log2 m) (Õ(log n log m)) Bit-Operationen 41 Ziel: Gilt n = ab , a, b, n, ∈ N, n ≥ 1, a, b ≥ 2 ? klar: b ≤ log n ∀a < n: ab < n, ab = n, ab > n ? (schnelle Exponentiation, Zwischenergebnis > n → abbrechen → Zahlen < n2 ) Idee: binäre Suche für a ∈ {2, . . . , n − 1} Lemma 2.3.6: Testen, ob n perfekte Potenz, kostet O(log2 n log log n) Multiplikationen von Zahlen aus {1, . . . , n} O(log4 n log log n) (Õ(log 3 n)) Bit-Operationen 42 Algorithmus 2.3.5: Perfekte Potenz Eingabe: n ≥ 2 0 a, b, c, m, p: Integer; 1 b ← 2; 2 while 2b ≤ n repeat 3 a ← 2; c ← n − 1; 4 while c − a ≥ 2 repeat 5 m ← (a + c) div 2; 6 p ← min{mb , n + 1}; 7 if p = n then return ( Perfekte Potenz“,m,b); ” 8 if p < n then a ← m else c ← m; 9 b ← b + 1; 10 return keine Perfekte Potenz “; ” 43 Exkurs Zahlentheorie Definition 3.1.1: m, n ∈ Z n teilt m, n|m, wenn n · x = m, x ∈ Z n Teiler von m, m Vielfaches von n 0 teilt nur 0 0 ist Vielfaches aller ganzen Zahlen 44 Proposition 3.1.3: a) n|m und n|k → n|(m · u + k · v ) für beliebige u, v ∈ Z b) n, m > 0 und n|m → n ≤ m c) n|m und m|k → n|k d) n|m → (−n)|m und n|(−m) Definition 3.1.4: n ∈ Z : D(n) Menge der nichtnegativen Teiler von n Definition 3.1.6: a) ggT(n, m) : = max{D(n) ∩ D(m)} 45 Definition 3.1.6: b) ggT(n, m) = 1 → m, n teilerfremd Proposition 3.1.7: a) ggT(n, m) = ggT(−n, m) = ggT(n, −m) = ggT(−n, −m) b) ggT(n, n) = ggT(n, 0) = ggT(0, n) = |n| c) ggT(n, m) = ggT(m, n) d) ggT(n, m) = ggT(n+mx , m) ր D(n) ∩ D(m) = D(n + mx) ∩ D(m) 46 Proposition 3.1.8: Ganzzahlige Division mit Rest n = d· q + r, տ ր eindeutig Definition 3.1.9: n mod d = r n | div {z d} = q jnk d 0≤r <d Beweis: • Existenz X • Eindeutigkeit: n = q · d+ r = q ′ · d+ r ′ տ ր r′ r , r ′ ∈ {0, . . . , d − 1} o.B.d.A. ≥ r 0 = (q ′ − q)d+ (r ′ − r ) | {z } տ Vielfaches von d → r ′ = r → q′ = q 47 Proposition 3.1.11: ∀n, m ∈ Z ∃x, y ∈ Z: ggT(n, m) = n · x + m · y Beweis: • n = 0 oder m = 0 → (x, y ) = (1, 1) oder (x, y ) = (−1, −1) • I = {n · u + m · v |u, v ∈ Z} Wahl von x und y , so dass n · x + m · y = :d kleinstes ր positives Element in Z ggT(n, m) Existenz X z.z. • d ∈ D(n) ∩ D(m) • ∀z ∈ D(n) ∩ D(m): z|d 48 Beweis Fortsetzung: d: = n · x + m · y , d kl. pos. El. in I = {n · u + m · v |u, v ∈ Z} z.z. d|n (d|m analog) n = d · q + r, 0 ≤ r < d → r = n − d · q = n − (n · x + m · y )q r ∈I r < d, d kleinstes Element in I = n(1 − xq) + m(−yq) ւ →r =0 Korollar 3.1.12: ggT(k · n, k · m) = k ·ggT(n, m), k > 0 49 Proposition 3.1.13: (i) ⇔ (ii) mit (i) n, m teilerfremd (ii) ∃x, y ∈ Z: 1 = nx + my (ii) ⇒ (i) d|n und d|m → d|1 → ggT(n, m) = 1 Korollar 3.1.14: n, k teilerfremd → ggT(n, m · k ) =ggT(n, m) Beweis: 1 = nx + ky → m = n(mx) + (mk )y → Teiler von n und mk auch Teiler von m Proposition 3.1.15: n, m teilerfremd n und m teilen k → n · m teilt k 50 Algorithmus 3.2.1: Euklidischer Algorithmus Eingabe: n, m ∈ Z 0 a, b: Integer; 1 if |n| ≥ |m| 2 3 then a ← |n|; b ← |m|; else a ← |m|; b ← |n|; 4 while b > 0 repeat 5 (a, b) ← (b, a mod b); 6 return a; 51 → Folge (a0 , b0 ), (a1 , b1 ), . . . , (at , bt ) mit {a0 , b0 } = {|n|, |m|}, ai = bi−1 , bi = ai−1 mod bi−1 , 1 ≤ i ≤ t, bt = 0 Beispiel: n = 10534 m = 12742 ai bi i 0 12742 10534 1 10534 2208 2 2208 1702 3 1702 506 506 184 4 5 184 138 6 138 46 7 46 0 Lemma 3.2.2: a) ggT(ai , bi ) =ggT(n, m) b) Ausgabe Algo 3.2.1: ggT(n, m) n=m=0 → Ausgabe 0 → ggT(10534, 12742) = 46 52 Lemma 3.2.3: 4 while b > 0 repeat Euklidischer Algo für n, m 5 (a, b) ← (b, a mod b) Schleife höchstens 2 min{knk, kmk} = O(min{log n, log m}) (b) O(log n log m) Bit-Operationen (a) Beweis: (a) b0 ≥ b1 ≥ · · · ≥ bt = 0 bi , bi+1 , bi+2 Reduktion um 1 Bit Fall 1: Fall 2: bi+1 > 12 bi = 12 ai+1 bi+2 = ai+1 mod bi+1 = ai+1 − bi+1 < 12 bi bi+1 ≤ 12 bi = 12 ai+1 bi+2 = ai+1 mod bi+1 < bi+1 ≤ 21 bi 53 Beweis Lemma 3.2.3: (b) Division ai durch bi : O(kai k − kbi k + 1)(kbi k)) (kai k − kbi k + 1)kbi k= kai k · kbi k−kai+1 k · kbi k + kbi k ր bi = ai+1 , 0 ≤ i < t t−1 X ≤ (kai k − kai+1 k)kb0 k + kbi k ր b0 ≥ bi O((kai k − kbi k + 1)kbi k) i=0 t−1 X =O( i=0 ((kai k − kai+1 k)kb0 k + kbi k) =O(ka0 k · kb0 k + tkb0 k) = O(knk · kmk) = O(log n · log m) Zeile 1: knk ≥ kmk:O(knk + kmk) 54 Algorithmus 3.2.4: Erweiterter Euklidischer Algorithmus Eingabe: n, m ∈ Z 0 a, b, xa, ya, xb, yb: Integer; 1 if |n| > |m| 2 then a ← |n|; b ← |m|; 3 xa ← sign(n); ya ← 0; xb ← 0; yb ← sign(m); 4 else a ← |m|; b ← |n|; 5 xa ← 0; ya ← sign(m); xb ← sign(n); yb ← 0; 6 while b > 0 repeat 7 q ← a div b; 8 (a, b) ← (b, a − q · b); 9 (xa, ya, xb, yb) ← (xb, yb, xa − qxb, ya − qyb); 10 return (a, xa, ya); | {z } տ ggT (n, m) = a = n · xa + m · ya 55 Lemma 3.2.5: Wenn bei Eingabe n, m der erweiterte Euklidische Algorithmus die Ausgabe (d, x, y ) ausgibt, gilt d = ggT(n, m) = n · x + m · y . Beweis: • d = ggT(n, m) X • t= ˆ # Schleifendurchläufe per Induktion über i ≤ t: ai = n · xa,i + m · ya,i bi = n · xb,i + m · yb,i i =0X 56 Beweis (Fortsetzung): i − 1 → i: ai = Ind.vor . ց bi−1 = nxb,i−1 + myb,i−1 = nxa,i + mya,i bi = Ind.vor . ↓ ai−1 − qi bi−1 = nxa,i−1 + mya,i−1 − qi (nxb,i−1 + myb,i−1 ) = n (xa,i−1 − qi xb,i−1 ) + m (ya,i−1 − qi yb,i−1 ) | {z } | {z } xb,i yb,i = nxb,i + myb,i ր Zeile 9 Algo 3.2.4 −→ at = ggT(n,m) = nxa,t + mya,t 57 Beobachtung: a ≡ b mod m ⇔ m|(b − a) տ ↑ ր ∈Z Begründung: a b →(b − a) = m·q+r = m · q′ + r ′ 0 ≤ r, r′ < m = m · (q ′ − q) + (r ′ − r ) ⇒ r′ = r ⇐ m|(b − a) → m|(b − a) → m|(r ′ − r ) → r′ = r ր ′ |r − r | < m 58 Erinnerung: a ≡ a′ mod m n∈N ⇒ a + b ≡ a′ + b′ mod m a · b ≡ a′ · b′ mod m տ ր ∈Z −→ − ← a ≡ a′ mod m b ≡ b′ mod m an ≡ a′ n mod m Definition 3.3.4: Zm = {0, 1, . . . , m − 1} a +m b a ·m b := (a + b) mod m := (a · b) mod m Addition modulo m Multiplikation 59 Erinnerung (Lemma 3.3.5): (Zm , +m , ·m ) kommutativer unitärer Ring ր տ auch ·m kommutativ auch für ·m neutrales Element Beobachtung: m keine Primzahl: (Zm \{0}, ·m ) nicht abgeschlossen Nullteiler: ∃a: ggT(a, m) > 1 a ·m m ggT(a,m) ↑ <m =0 60 Proposition 3.3.6: (a) m|a · b und ggT(m, a) = 1 −→ m|b (b) X a · b ≡ a · c mod m und ggT(m, a) = 1 −→ b ≡ c mod m Beweis: a · b ≡ a · c mod m, dann a(b − c) ≡ 0 mod m → m|(b − c) ⇔ b ≡ c mod m X 61 Definition 3.3.7: m ≥ 1: Z∗m : = {a | 1 ≤ a < m, ggT (a, m) = 1} ϕ(m): =| Z∗m | ↑ Eulers ϕ-Funktion Proposition 3.3.8: (a) 1 ∈ Z∗m (b) a, b ∈ Z∗m → a ·m b ∈ Z∗m (c) a ∈ Z∗m ⇔ ∃b ∈ Zm :a ·m b = 1 62 Beweis: (b) z.z. a, b ∈ Z∗m → a ·m b ∈ Z∗m | {z } → ggT (a, m) = ggT (b, m) = 1 → ggT (a · b, m) = 1 → ggT (ab mod m, m) = 1 ↑ Proposition 3.1.7 (d) ggT (n, m) = ggT (n + mx , m) (c) “⇒” z.z. a ∈ Z∗m → ∃b ∈ Zm : a ·m b = 1 | {z } ggT (a, m) = 1 → ∃x , y : 1 = ax + my → ax ≡ 1 mod m → b ≡ x mod m “⇐” a ·m b = 1 → ab − 1 = mx ⇔ Propos 3.1.13 1 = mx − ab −−−−−−→ ggT (a, m) = 1 63 Der Chinesische Restklassensatz Beispiel: 24 = 3 · 8, ggT (3, 8) = 1 a a mod 3 a mod 8 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 Z24 → Z3 × Z8 5 5 Bijektion ( 2 | mod {z 3} , 3 | mod {z 8}) 115 mod 24= (2, 7) + (2, 1) = (2 +3 2, 7 +8 1) = (1, 0) | {z } | {z } | {z } 23 +24 17 = (2, 3) | {z } 11 16 64 Satz 3.4.1: Sei n = n1 · n2 und ggT (n1 , n2 ) = 1 Abbildung 8 : Zn → Zn1 × Zn2 , a 7→ (a mod n1 , a mod n2 ) ist bijektiv Für (a) (b) (c) 8(a) = (a1 , a2 ), 8(b) = (b1 , b2 ) gilt 8(a +n b) = (a1 +n1 b1 , a2 +n2 b2 ) 8(a ·n b) = (a1 ·n1 b1 , a2 ·n2 b2 ) 8(am mod n) = ((a1 )m mod n1 , (a2 )m mod n2 ) 65 Beweis: • Bijektivität: Injektivität reicht Annahme: 0 ≤ a ≤ b < n : 8(a) = 8(b) → a ≡ b mod n1 und a ≡ b mod n2 Aussage Proposition 3.1.15 → (b − a) mod n1 = 0, (b − a) mod n2 = 0 ggT (n1 ,n2 )=1 −−−−−−−→ (b − a) mod n = 0 0≤a≤b<n −−−−−→ b = a • (b) a ≡ a1 mod n1 , b ≡ b1 mod n1 ր → a · b ≡ a1 · b1 mod n1 (a), (c) analog n |n | a2, b2 , n2 analog ) 1 a ·n b mod n1 a · b ≡ ((a · b) mod n) = 66 Interpretation: Berechnung modulo n = ˆ komponentenweise Berechnung modulo n1 , n2 Reste bezüglich n1 , n2 beschreiben eindeutig Zahl aus {0, 1, . . . , n − 1} Korollar 3.4.2: Für n = n1 n2 mit ggT (n1 , n2 ) = 1 gilt, dass für beliebige x1 , x2 genau ein a ∈ Zn existiert mit a ≡ x1 mod n1 und a ≡ x2 mod n2 . 67 Satz 3.4.3: Sei n = n1 · · · · · nr mit ggT (ni , nj ) = 1, 1 ≤ i < j ≤ r . Abbildung 8: Zn a ist bijektiv mit → Zn1 × · · · × Znr 7 → (a mod n1 , . . . , a mod nr ) (a) 8(a +n b) = (b) 8(a ·n b) = (c) 8(am mod n) = (a1 +n1 b1 , . . . , ar +nr br ) (a1 ·n1 b1 , . . . , ar ·nr br ) ((a1 )m mod n1 , . . . , (ar )m mod nr ) 68 Beweis: (Bijektivität von 8) Injektivität reicht Annahme: −→ −→ 3.1.15 −→ 0≤a≤b<n −→ 0 ≤ a ≤ b < n: 8(a) = 8(b) a ≡ b mod ni , 1 ≤ i ≤ r ni | (b − a), 1 ≤ i ≤ r n | (b − a) a=b 69 Lemma 3.4.4: Sei n = n1 n2 mit ggT (n1 , n2 ) = 1 und 8(a) = (a1 , a2 ): a ∈ Z∗n ⇔ a1 ∈ Z∗n1 , a2 ∈ Z∗n2 Beweis: (i) ⇔ (ii) ⇒“ ” ggT (n, m) = 1 Propos. 3.1.13 ∃x, y ∈ Z: 1 = nx + my a ∈ Z∗n → 1 = → 1 = → = au + nv (a1 +|{z} k n1 )u + nv ⌊ na1 ⌋ n z }| { a1 u + (k u+n2 v )n1 a1 ∈ Z∗n1 70 Beweis (Fortsetzung): ⇐“ ” a1 ∈ Z∗n1 , a2 ∈ Z∗n2 → 1 = a1 u1 + n1 v1 1 = a2 u2 + n2 v2 Chines. Restklassensatz → a1 u1 ≡ 1 (mod n1 ) → a2 u2 ≡ 1 (mod n2 ) ∃!u: u ≡ u1 (mod n1 ), u ≡ u2 (mod n2 ) → au ≡ a1 u ≡ a1 u1 ≡ au ≡ a2 u ≡ a2 u2 ≡ → au − 1 ≡ 0 (mod au − 1 ≡ 0 (mod 1 (mod n1 ) 1 (mod n2 ) ) n1 ) au ≡ 1 mod n n2 ) −→ Propos. 3.3.8(c) genau El. aus Z∗ n inverse El. a ∈ Z∗n 71 Korollar 3.4.5: n = n1 n2 und ggT (n1 , n2 ) = 1: ϕ(n) = ϕ(n1 ) ϕ(n2 ) 72 Agorithmus 3.5.4: Sieb des Eratosthenes Eingabe: n ∈ N 1 m[2 . . . n]: Array mit El. aus N; 2 for j from 2 to n do m[j]← 0; 3 j ← 2; 4 while j · j ≤ n do 5 if m[j]= 0 then 6 i ← j · j; 7 while i ≤ n do 8 if m[i]= 0 then m[i]← j; 9 i ←i +j 10 j ←j +1 11 return m[2 . . . n]; Kommentar: k ·j (k = 2, . . . , j − 1) bereits betrachtet 73 Lauftzeitanalyse: p P |{z} √ ≤ n n p Primzahl + ≤ O(n) | {z } konstante Schritte für zusammengesetzte Zahlen ln n < P 1≤i≤n 1 i | {z } Hn n-te Harmonische Zahl = O(n ln n) Bessere Abschätzung: P p≤n 1 p P n √ k k≤ n + O(n) < 1 + ln n n≥2 ≤ ln ln n + O(1) für n → ∞ 74 Proposition 3.5.11: Seien n = p1 · · · · · pr und m = q1 · · · · · qs . ggT (n, m) = 1 ⇔ {p1 , . . . , pr } ∩ {q1 , . . . , qs } = ∅ Beweis: ⇒“ ” ⇐“ ” indirekt indirekt ggT (n, m) > 1 → ∃p : p | ggT (n, m) → p | n und p | m → p muss in Primfaktorzerlegung von n und m sein 75 Proposition 3.5.12: k k Sei p11 · p22 · · · · · prkr die Primfaktorzerlegung von n. | {z } pi 6= pj , i 6= j Q Q k −1 ϕ(n)= =n· (pi −1)pi i (1 − p1 ) 1≤i≤r i 1≤i≤r Beweis: • n = p1 X n = 1X k • n = p11 , k1 ≥ 2 k ϕ(n) = p11 − 1 − | {z } {1, . . . , n − 1} k k −1 = p11 − p11 k −1 p11 − 1 | {z } Vielfache von p1 k in Menge {1, . . . , p11 − 1} k = p11 · (1 − 1 p1 )X 76 Beweis (Fortsetzung): k k • n = p11 · p22 · · · · · prkr , r ≥ 2 | {z } k k ggT (pi i , pj j ) = 1 , i 6= j Erinnerung: ϕ(n) = ϕ(n1 ) · ϕ(n2 ) für n = n1 · n2 Korollar 3.4.5 und ggT(n1 , n2 ) = 1 ϕ(n) = Q 1≤i≤r k ϕ(pi i ) = Q k 1≤i≤r = n· pi i · (1 − Q 1≤i≤r (1 − 1 pi ) 1 pi ) 77 Dichte von Primzahlen x 40 50 70 100 200 500 1000 5000 10000 π(x ) 12 15 19 25 46 95 168 669 1229 x ln x −1 14.9 17.2 21.5 27.7 46.5 95.9 169.3 665.1 1218 π(x) : # Primzahlen bis x Erinnerung: Primzahlsatz Hadamard / de la Vallée Poussin (1896) lim x →∞ π(x ) x ln x =1 Hier: π(x) = 2( logx x ) 78 Satz 3.6.3: N≥2: N log N − 2 ≤ π(N) ≤ 3·N log N Beweisidee untere Schranke: • N ungerade ↑Erweiterung technischer Natur • N gerade N:= 2n k1 kr 2n n = p1 · · · pr k pi i 22n 2n ≤ ↑ 2n n < 22n größter Binomialkoeffizient ↑ 2n ) ≤ 2n −→ r = 2( log(2n) 79 Lemma 3.6.4: (Legendre) ϑp (n!) | {z } maximales j für das gilt p j |n! = Pjnk k≥1 pk 80 Beweis: oft hilfreiches Abzählargument Rp,n = {(i, k ) | 1 ≤ i ≤ n und pk |i} Wir zeigen: |Rp,n | = ϑp (n!) ↑ und Zählen nach 2. Komponente P = {k ≥ 1 |p k | i} 1≤i≤n P = max{k ≥ 1 |p k | i} 1≤i≤n P = ϑp (i) = ϑp (n!) 1≤i≤n |Rp,n | = ↑ Pjnk k≥1 pk Zählen nach 1. Komponente P |{i | 1 ≤ i ≤ n, p k |i}| {z } k ≥1 | # Vielfachen (> 0) von pk bis n 81 Lemma 3.6.5: ℓ := ϑp |{z} Exponent von p in Primfaktorzerlegung von 2n n Beweis: (2n)! ℓ = ϑp n !n ! = = = 2n n , p Primzahl: pℓ ≤ 2n ϑp ((2n)!) − 2ϑp (n!) P j 2n k Pjnk − 2 pk pk k≥1 k≥1 k j k j P − 2 pnk ) ( 2n pk k≥1 | {z } ∈ {0, 1} → ℓ ≤ max{k ≥ 1 | pk ≤ 2n} → pℓ ≤ 2n 82 Lemma 3.6.6: 2n n Beweis: 2n n = ≤ (2n)π(2n) , n ≥ 1. k p11 · · · · · prkr | {z } Beobachtung: Primfaktorzerlegung des Binomialkoeffizienten pi kommt in Primfaktorzerlegung von (2n)! vor → durch 2n in Größe nach oben beschränkt → r ≤ π(2n) k → p11 · · · · · prkr ≤ (2n)r ≤ (2n)π(2n) 83 Fortsetzung Beweis untere Schranke Satz 3.6.3: N log N − 2 ≤ π(N) 22n 2n ≤ 2n n ≤ (2n)π(2n) → 2n − log(2n) ⇔ • 2n log(2n) ≤ π(2n) log(2n) −1 ≤ π(2n) X N ungerade, N = 2n + 1 π(2n + 1) ≥ π(2n) ≥ → π(N) ≥ N log N 2n log(2n) −1 > 2n log(2n+1) −1 > 2n+1 log(2n+1) −2X −2 84 Beweis obere Schranke Satz 3.6.3: π(N) ≤ Lemma 3.6.7: Q N ≥ 2: p < 4N−1 p ≤N |{z} 3N log N Dichte π(N) ≪ c · N, 0 < c ≤ 1 → Primzahl Beweis: Induktionsanfang: N = 2: 2 < 42−1 = 4 X Induktionsschluss: 1. Fall: N gerade: <einfach> (N > 2) Q p = p≤N ↑ Q p < 4N−2 < 4N−1 X p≤N−1 N keine Primzahl 85 Beweis (Fortsetzung): 2. Fall: N ungerade : N = 2m + 1 Q Q Q p= p m + 2≤p≤2m + 1 p≤m + 1 p≤N | {z } < 4m (Ind. voraus.) noch z.z. Q | ! {z < 4m p < 4m p< 42m = 4N−1 } m + 2≤p≤2m + 1 Q p< m+2≤p≤2m+1 ր alle Primzahlen zwischen m + 2 und 2m + 1 als Faktor im Zähler Nenner nicht durch solche Primzahlen teilbar 2m+1 m = < ր (2m+1)2m···(m+2) m! 1 2 · 22m+1 = 4m X 2m+1 = 2m+1 m m+1 86 Lemma 3.6.8: p1 · p2 · · · · · pk ≥ 2k ·k ! , k ≥ 9 Beweis: Induktionsanfang: p1 · p2 · · · · · p9 ≥ 29 ·9! X Induktionsschluss: Beobachtung: pk+1 > 2(k + 1) p1 · · · · · pk · pk+1 > 2k k ! · 2(k + 1) = 2k+1 (k + 1)! X 87 Lemma 3.6.7 & Lemma 3.6.8: k Q 2k ke p = p1 · · · · · pk < 4N−1 < 4N < 2k · k ! < p≤N → k · (ln k + ln 2 − 1) < (2 ln 2)N z.z. k ≤ 3N log N reicht z.z.: k < Annahme: k ≥ 2N ln N 2N ln N (Satz 3.6.3) (< 2.07N ln N < 3 ln 2 N log N = 2N 2N ln N (ln( ln N ) + ln 2 − 1) 2N ln N (2 ln 2 + ln N − ln ln N < (2 ln 2)N −→ < 3N log N ) − 1) 88 2N ln N (2 ln 2 ⇔ ⇔ + ln N − ln ln N − 1) 2 ln 2 + ln N − ln ln N − 1 < (2 ln 2)N < ln 2 ln N (1 − ln 2) ln N − ln ln N + 2 ln 2 − 1 < 0 Betrachte: f : x 7−→ ((1 − ln 2) ln x − ln ln x + 2 ln 2 − 1) x ≥2 f ′ (x) = (1 − ln 2)x −1 − 1 f ′ (e 1−ln 2 ) = e f 1 1−ln 2 (27) 1−ln 2 1 e 1−ln 2 ≈ 26.02 > 0 − 1 x ln x 1−ln 2 1 e 1−ln 2 =0 f (x) > 0, x ≥ 27 2 89 Proposition 3.6.9: (→Laufzeitanalyse AKS-Algo.) Q p > 2n p≤2n ր Primzahl Beweis: 22n 2n < ր 2n n ≤ größter Binomialkoeffizient Q √ p≤ 2n √ 3 √2n √ (2n)π( 2n) ≤ (2n) log( 2n) −→ 22n 2n · 1 √ 26 2n ≤ √ 2n √ տ Q p 2n<p≤2n ր Lemma 3.6.5: maximale Primzahlpotenz in Primfakorzerlegung von 2n n √ höchstens 2n → Primzahlen größer als 2n √ höchstens einfach“ ” = 26 2n Q p < 2n<p≤2n −→ reicht z.z. 2n ≤ 22n√ 2n·26 2n Q p p≤2n 90 Beweis (Fortsetzung): 2n z.z. ⇔ n ≥ ≥ 2n · 26 √ 2n √ 1 + log n + 6 2n √ ⇔ n − 6 2n − log n − 1 ≥ 0 • • n groß genug“ X ” √ f : x 7−→ x − 6 2x − log x − 1 √ f (100) = 99 − log 100 − 6 200 > 8 f ′ (x) f ′ (100) = 1− = 1− √6 − 1 ր x 2x 1 6√ − 100 > 10 2 0 −→ Aussage für n ≥ 100 X n < 100 ausrechnen“X ” 91 Exkurs Algebra Erinnerung: Lemma 4.1.6: (G, ◦, e) endliche Gruppe, H ⊆ G mit (i) e∈H (ii) H abgeschlossen unter ◦ → H Untergruppe von G Beweis: keine Untergruppe z.z. ∀a ∈ H: a−1 ∈ H ւ Bemerkung: Endlichkeit wichtig, Beispiel (Z, +, 0), (N, +, 0) 92 Beweis (Fortsetzung): a ∈ H: fa : H → H, b 7−→ a ◦ b ր injektiv, denn → → տ H abgeschlossen bzgl ◦ a ◦ b1 a−1 ◦ a ◦ b1 b1 = = = a ◦ b2 a−1 ◦ a ◦ b2 b2 → bijektiv → fa −1 (e) = 6 ∅ ∃c ∈ H: a ◦ c = e →c = a−1 93 Definition 4.1.7: H Untergruppe von G. a ∼H b mit b−1 ◦ a ∈ H Lemma 4.1.8: (a) ∼H Äquivalenzrelation (b) ∀b ∈ G ∃Bijektion zwischen H und Äquivalenzklasse [b]H Beweis: −1 (b) [b]H = {a ∈ G | a ∼H b}, gb :[b]H → G, a 7−→ b | {z◦ a} ∈H • surjektiv: b ◦ |{z} c ∈ [b]H : gb (b ◦ c) = b−1 ◦ b ◦ c = c X ∈H • injektiv: gb (a) = gb (a′ ) → a = b ◦ gb (a) = b ◦ gb (a′ ) = a′ X 94 Proposition 4.1.9: Euler/Lagrange H Untergruppe einer endlichen Gruppe G → |H| Teiler von |G| Beweis: C1 , . . . , Cr alle Äquivalenzklassen bzgl. ∼H ր a ∼H b mit b−1 ◦ a ∈ H → |C1 | + · · · + |Cr | = |G| [e]H = H, o.B.d.A. C1 = H |C1 | = · · · = |Cr | → r |H| = |G| տ Lemma 4.1.8 Bijektion zwischen H (b): und Äquivalenzklassen bzgl ∼H 95 Zyklische Gruppe (G, ◦, e) Gruppe ∀a ∈ G: a0 = e ai = a ◦ ai−1 , i ≥ 1 a−i = (a−1 )i Lemma 4.2.1: (a) (ai )−1 (b) ai+j (c) a ◦ b ↑ր a, b ∈ G = a−i = ai ◦ aj = b ◦ a → (a ◦ b)i = ai ◦ bi i, j ∈ Z 96 Beweis: i = 0 oder j = 0 X (a) −1 ai ◦ a−i = a · · ◦ a} ◦ a · · ◦ a−1} = e | ◦ ·{z | ◦ ·{z i (b) i i, j > 0 oder i, j < 0: Assoziativgesetz Sei i > 0, j < 0: k : = −j i = k →(a) i > k : ai ◦ a−k = ai−k ◦ (ak ◦ a−k ) | {z } i < k: (c) ai ◦ a−k −i i =a | ◦{za } e e −k+i ◦a = ai−k Assoziativität + mögl. Vertauschung von a, b a−1 ◦ b−1 = b−1 ◦ a−1 97 Proposition 4.2.2: (G, ◦, e) Gruppe, a ∈ G: hai: = {ai | i ∈ Z} ր kleinste (kommutative) Untergruppe von G, die a enthält: von a generierte Untergruppe Definition 4.2.3: (G, ◦, e) zyklisch, wenn a ∈ G mit hai = G existiert ր Generator von G Beispiel: (Zm , +m , 0), Generator i ∈ Z∗m : 0, i, i + i mod m, . . . , (i + . . . + i) mod m | {z } m−1 98 Beispiel: • (Z∗9 , ◦9 , 1): Generator 5 ր {1, 2, 4, 5, 7, 8} • alle (Zp∗l , ◦pl , 1), p ungerade Primzahl Definition 4.2.5: (G, ◦, e) Gruppe, a ∈G |hai|, Ordnung ordG (a) = ∞, wenn hai endlich sonst Lemma 4.2.6: (a) (b) Alle ai , i ∈ Z, verschieden → ordG (a) = ∞, i 7−→ ai , i ∈ Z hai isomorph zu Z ai = aj , i < j, → ordG (a) ≤ j − i 99 Proposition 4.2.7: (G, ◦, e) Gruppe, a ∈ G mit ordG (a) = m, m ≥ 1 (a) (b) (c) hai = {e, a, a2 , . . . , am−1 } ai = aj ⇔ m | j − i (→ ai = ai mod m , ∀i ∈ Z) hai isomorph zu Zm , +m mit i 7−→ ai , i ∈ Zm ((ai )−1 = am−i ) Beweis: (a) (b) ai = aj (a)→ ⇐“ ” ⇒“ ” für 0 ≤ i < j < m → ordG (a) ≤ j − i < m am = a0 = e j − i = mq → ai = ai+mq = aj ai = aj → aj−i = a0 = e, j − i = mq + r , 0 ≤ r < m: aj−i = amq+r = ar → r = 0 100 Proposition 4.2.8: (G, ◦, e) endliche Gruppe, a ∈ G → a|G| = e Beweis: 4.2.7(b) hai Untergruppe → |hai|||G| −−−−→ a|G| = a0 = e Satz 4.2.9: Euler m ≥ 2: ∀a ∈ Z∗m : aϕ(m) mod m = 1 m Primzahl: Satz 4.2.10: Kleiner Satz von Fermat ) p Primzahl ap−1 mod p = 1 1≤a<p (ap mod p = a) 101 Untergruppen zyklischer Gruppen Lemma 4.2.11: G = hai, |G| = m, H Untergruppe von G (a) (b) (c) H zyklisch H = {a0 , az , a2z , . . . , a(d−1)z }, z|m und d = H = {b ∈ G | bd = e} für d = m z m z Beweis: G = {a0 , a1 , . . . , am−1 } minimal mit az ∈ H |H| = 1 → H = {e} = hei ↓ (a), (b), (c) wahr für z = m, d = 1; also d > 1, 1 ≤ z < m 102 Beweis (Fortsetzung): ai ∈ H: i = qz + r , 0 ≤ r < z (a) z minimal mit az ∈ H, 1 ≤ z < m ar = ai ◦ (az )−q ∈ H −−−−−−−−−−−−−−−−−→ r = 0 → ai = (az )q (b) z.z. z|m r := ggT (z, m), r = j · z + k · m ar = (az )j ◦ (am )k = (az )j ∈ H z minimal mit az ∈ H −−−−−−−−−−−→ r = z→z|m → {a0 , az , . . . , a(d−1)z }, d = | {z } m z H (c) • a(jz)d = e, 0 ≤ j < d • bd = e mit b = ai → aid = e → m Teiler von id = i m z → i z ∈ Z → ai ∈ H (b) 103 Lemma 4.2.12: G = hai, |G| = m, s ≥ 0 Hs = {b ∈ G | bs = e} Untergruppe von G mit ggT(m, s) Elementen Beweis: • Lemma 4.1.6 −−−−−−−→ Hs Untergruppe e ∈ Hs Hs abgeschlossen • Wieviele Elemente? ai ∈ Hs ⇔ ai·s = e → m|i · s ⇔ i = 0 ≤ i < m → ggT(m, s) Elemente m ggT(m,s) ·x 104 Lemma 4.2.13: G = hai, |G| = m: (a) b ∈ G −→ ordG (b)|m (b) ordG (ai ) = ggTm(i,m) (c) d|m: G enthält genau ϕ(d) Elemente der Ordnung d Beweis: (a) (b) hbi Untergruppe von G = Sei d = ordG (ai ): a0 , ai , a2i , . . . , a(d−1)i | {z } e verschieden von e →d kleinstes k ≥ 1 mit m|ki * ′ i i = ggT(i,m) m|ki ⇔ m′ |ki ′ ⇔ m′ |k ggT(i ′ , m′ ) = 1 m → kleinstes k teilbar m′ = ggT(i,m) durch m′ ist m′ 105 (c) (4.2.13) d | m: G enthält genau ϕ(d) El. der Ordnung d ր G = hai, |G| = m Beweis: (c) ggT(j · m d , m) Korollar 3.1.12 ggT(k · n, k · m) = k · ggT(n, m) ւ = = ⇔ Vorüberlegung: m d ·ggT(j, d) m d ggT(j, d) = 1 ր #j: ϕ(d) Elemente mit Ordnung d: ai mit ggT(i, m) = m d, also i = j · m d m ggT(i,m) =d 106 Beispiel: Z∗25 ϕ(25) = 20, Generator: 2 1 2 3 4 6 7 8 9 11 12 13 14 16 17 18 19 21 22 23 24 20 21 27 22 28 25 23 214 216 29 219 26 24 213 215 218 212 217 211 210 d ϕ(d) 1 1 2 1 4 2 5 4 10 4 20 8 Elemente der Ordnung d 4.2.13 (b) ai Ordnung m ggT(i,m) ր hier: m = 20 107 Definition 4.3.4: (a) (R, ⊕, ⊙, 0, 1) Ring ր տ neutrales El. der Addition neutrales El. der Multiplikation. Hier: Ring = ˆ kommutativer Ring mit neutralem Element der Multiplikation → R ∗ = {a ∈ R | ∃b ∈ R: a ⊙ b = 1} (b) a ∈ R − {0} Nullteiler in R, wenn c ∈ R − {0} existiert mit a ⊙ c = 0. · Beobachtung: R = R ∗ ∪ “Menge der Nullteiler in R” 108 ∈R a ր inverses Element ∈ R der Addition Proposition 4.3.7: m ≥ 2 (i) ⇔ (ii) b = a ⊙ b−1 տ տ ⊘ Notation: a ⊖ b = a ⊕ (−b) ր ↑ ր ∈ R∗ inverses Element der Multiplikation in R ∗ Ring Zm ist Körper m ist Primzahl Beweis: ⇒“ ” ⇐“ ” indirekt m keine Primzahl → ∃r , s ∈ {0, . . . , m − 1}: r · s = m ≡ 0 mod m → Zm − {0} bzgl ⊙ nicht abgeschlossen Z∗m = {1, . . . , m − 1}, Z∗m Gruppe bzgl Multiplikation (Propos. 3.3.8) 109 Proposition 4.3.8: (M, ◦, 1) Monoid. Es gibt Algorithmus, der für jedes a ∈ M und n ≥ 0 mit O(log n) Multiplikationen an in M berechnet. Algorithmus 4.3.9: (→ Algorithmus 2.3.3 Folie 39) Eingabe: a aus (M, ◦, 1), n ≥ 0 0 1 2 3 4 5 6 7 8 s, c: M; u: Integer u ← n; s ← a; c ← 1; while u ≥ 1 repeat if u ungerade then c ← c◦s; s ← s◦s; u ← u div 2; return c; 110 Vorbereitung “ ” 1 12 2 12 3 12 4 12 5 12 6 12 7 12 8 12 9 12 10 12 11 12 12 12 1 6 1 4 1 3 5 12 1 2 7 12 2 3 3 4 5 6 11 12 1 1 Kürzen −−−→ 1 12 Gruppieren −−−−−−→ 1 1 |{z} 1 2 |{z} 2 1 3 | {z 3} Nenner: Teiler von 12 3 1 4 4 | {z } 5 1 6 6 | {z } 1 12 | 5 7 12 {z 12 11 12} ϕ(d) Brüche mit Nenner d, Zähler teilerfremd zu d → ϕ(1) + ϕ(2) + ϕ(3) + ϕ(4) + ϕ(6) + ϕ(12) = 12 111 Ziel: In jedem endlichen Körper ist die multiplikative Gruppe zyklisch Lemma 4.4.2: P n ∈ N: ϕ(d) = n d|n Beweis: n i , ggT(i,n) ), 1 ≤ i ≤ n (ai , bi ) = ( ggT(i,n) ր bi |n ggT(ai , bi ) = 1 −→ ϕ(bi ) Paare ( , bi ) 112 Korollar 4.4.4: p Primzahl → Z∗p zyklische Gruppe mit ϕ(p − 1) Generatoren (primitive Elemente modulo p) Definition 4.4.6: p Primzahl und p 6 | n: ordp (n)=ord ˆ Z∗p (n mod p) ր տ teilt nicht Ordnung von n mod p Offensichtlich: ordp (n) kleinstes i ≥ 1 mit ni mod p = 1 und ordp (n) | |Zp∗ | 113 Theorem 4.4.3: F endlicher Körper −→ F ∗ zyklische Gruppe, d.h. ∃g ∈ F ∗ mit F ∗ = {1, g, g 2 , . . . , g |F |−2 } klar: B 6= ∅ → es existiert q−1 Beweis: Generator / primitives Element q = |F | ւ ∀d: d|q − 1: Bd = {b ∈ F ∗ | ordF ∗ (b) = d} Behauptung: |Bd | = 0 oder |Bd | = ϕ(d) Propos. 4.1.9 ∀a: hai Untergruppe von F ∗ −−−−−−−→ ordF ∗ (a)|(q − 1) → Bd , d|(q − 1), Partition von F ∗ P ∗ → q − 1 = |F | = |Bd | ∀d: d|(q − 1): B 6= ∅ d d|(q−1) P Lemma 4.4.2: q − 1 = ϕ(d) → Bq−1 6= ∅ X d|(q−1) 114 Behauptung: Bd = {b ∈ F ∗ | ordF ∗ (b) = d} |Bd | = 0 oder |Bd | = ϕ(d) Beweis: • Bd = ∅ X • Bd 6= ∅: a ∈ Bd : ai1 6= ai2 , 0 ≤ i1 < i2 < d ց hai = {a0 , a1 , . . . , ad−1 } d i 0 ≤ i < d: ai = ad = 1 → ai Wurzel des Polynoms X d − 1 →hai enthält alle Wurzeln von X d − 1 ր b ∈ Bd → bd = 1 → b Wurzel von X d − 1 höchstens d Wurzeln 4.2.13(c) → Bd ⊆ hai −−−−−→ hai enthält ϕ(d) Elemente der Ordnung d in hai:Ord.d in F ∗ X 115 Randomisierte Primzahltests: Miller-Rabin Test Idee: kleinen Satz von Fermat nutzen, dabei falsche Zeugen, Fermatsche Pseudo-Primzahlen, insbesondere Carmichaelsche Zahlen, umgehen, denn an−1 ≡ 1 mod n, ∀a ∈ Z∗n , n Carmichael Zahl aber : n | (an−1 − 1) gilt nicht für alle a ր nach kleinem Satz von Fermat, wenn n Primzahl Einsatz: Maple, Mathematica 116 n|(an−1 − 1) gilt nicht für alle a, wenn n keine Primzahl Faktorisierung nach 3. binomischen Formel: n−1 n−1 a 2 −1 (an−1 − 1) = · a 2 +1 } n−1| {z n−1 a 4 − 1 · a 4 +1 | {z } etc. −→ n nur Primzahl, falls n einen dieser Faktoren teilt 117 Fermat Test 2n−1 n mod n 3 1 4 5 6 7 8 9 10 11 12 13 14 15 16 17 0 1 2 1 0 4 2 ր keine Primzahl nach kl. Satz von Fermat 1 8 1 2 4 0 1 2 Fermat Zeuge, dass 4 keine Primzahl Definition 5.1.1: a, 1 ≤ a < n, heißt F -Zeuge für n, wenn an−1 mod n 6= 1 118 F -Zeuge bezeugt Zusammengesetztheit einer Zahl liefert jedoch keinen Nachweis über mögliche Faktorisierung 2 ist F -Zeuge für alle zusammengesetzten Zahlen bis 340, jedoch: 341 = 11 · 31 2340 ≡ 1 mod 341 2 F -Betrüger für 341 Definition 5.1.2: n zusammengesetzte, ungerade Zahl a, 1 ≤ a < n, heißt F -Betrüger für n, wenn an−1 mod n = 1 1 und n − 1 F -Betrüger für alle zusammengesetzten ungeraden n 119 Lemma 5.1.3: n ≥ 2 und n ∈ N (a) Wenn 1 ≤ a < n und ar mod n = 1 für ein r ≥ 1, gilt a ∈ Z∗n (b) Wenn an−1 mod n = 1 für alle a, 1 ≤ a < n, ist n Primzahl Beweis: (a) Wenn ar mod n = 1, ist a ∈ Z∗n (ar −1 inverses Element Propos. 3.3.8 (c)) (b) Aus (a) folgt Z∗n = {1, 2, . . . , n − 1}, also n Primzahl 120 Lemma 5.1.3 (a) → für jede ungerade, zusammengesetzte Zahl n existiert F -Zeuge: {1, 2, . . . , n − 1} − Z∗n = {a | 1 ≤ a < n , ggT (a, n) > 1} ր #n − 1 − ϕ(n) aber: ϕ(n) kann sehr groß sein Beispiel: n= p·q |{z} Primfaktorzerlegung von n ggT (a, n) > 1 ⇔ p | a oder q | a #p+q−2 weitere F -Zeugen möglich 121 Beispiel: F -Zeugen und F -Betrüger für n = 91 = 7 · 13 F -Zeugen in Z F -Betrüger ∗ 91 7 13 2 33 59 1 29 64 14 26 5 34 60 3 30 66 21 39 6 37 67 4 36 68 28 52 8 41 71 9 38 69 # F -Zeugen > # F -Betrüger 35 65 11 44 72 10 40 74 42 78 15 45 73 12 43 75 49 56 63 70 77 84 18 46 76 16 48 79 19 47 80 17 51 81 20 50 83 22 53 82 24 54 85 23 55 87 31 57 86 25 61 88 32 58 89 27 62 90 (−: Vielfache von 7 Vielfache von 13 122 Algorithmus 5.1.4: Fermat Test Eingabe: ungerade Zahl n ≥ 3 • a zufällig gleichverteilt aus {2, . . . , n − 2} • if an−1 mod n 6= 1 • then return 0; • else return 1; Laufzeit: O(log3 n) (Lemma 2.3.4) co-RP*-Algorithmus für Primzahltest Frage: Fehlerwahrscheinlichkeit ? 123 Satz 5.1.5: Existiert für eine ungerade zusammengesetzte Zahl n ≥ 3 mindestens ein F -Zeuge a in Z∗n , klassifiziert der Fermat Test n mit W’keit größer 12 korrekt Beweis: LFn = {a | 1 ≤ a < n, an−1 mod n = 1} ⊆ Z∗n z.z. LFn Untergruppe von Z∗n ↑ 4.1.6 Z∗n endlich Lemma −→ (i) 1 ∈ LFn (ii) LFn abgeschlossen unter ·n F -Zeuge in Z∗n → LFn Z∗n 124 :–( Probability Amplification → Fehlerw’keit < ( 21 )l Leider: es gibt Zahlen n ohne F -Zeugen in Z∗n Definition 5.1.7: Ungerade, zusammengesetzte Zahl n heißt Carmichaelsche Zahl wenn an−1 mod n = 1, ∀a ∈ Z∗n Beispiel: 561 = 3 · 11 · 17 ↑ kleinste Carmichaelsche Zahl Frage: Wieviele? ∃x0 mit ∀x: x ≥ x0 : {n | n ≤ x, n Carmichaelsche Zahl} > x 2/7 125 Fehlerw’keit Carmichaelsche Zahl ϕ(n)−2 ϕ(n) Proposition 3.5.12 Q > = (1 − p1 ) n−3 n p mit p | n ↑ Zahlen aus {2, . . . , n − 2} Beispiel: n = 651693055693681 = 72931 · 87517 · 102103 ϕ(n) n :–( > 0.99996 Probability Amplification Lemma 5.1.8: n Carmichaelsche Zahl → n Produkt von mindestens drei verschiedenen Primzahlen 126 Beweis: Kontraposition (Ziel: F -Zeuge a in Z∗n ) 1. Fall: p2 | n, n = pk · m mit p6 |m |{z} |{z} p ≥ 3 ungerade k≥2 m =1 → a= 1+p m ≥ 3 → 1 ≤ a < p2 m mit a ≡ 1 + p mod p2 a≡1 mod m ↑ Existenz: Chinesischer Restklassensatz • a ∈ Z∗n : p2 | a − (1 + p) 3.3.6 → p6 |a ggT (a, m) = 1 −−−→ ggT (a, n) = 1 127 Beweis (Fortsetzung): • a F -Zeuge Annahme: p 2 |n → an−1 ≡ 1 mod n an−1 ≡ 1 mod p2 an−1 ≡ (1 + p)n−1 ≡ 1 + (n − 1)p + P 2≤i≤n−1 mod p2 ≡ 1 + (n − 1)p → (n − 1)p ≡ 0 mod p2 p|(n − 1) n−1 i i p 128 Beweis (Fortsetzung): 2. Fall: n = p · q mit p > q |{z} Primzahlen Generator Zp∗ ↓ 1 ≤ a < p · q mit a ≡ g mod p a ≡ 1 mod q ↑ Existenz: Chinesischer Restklassensatz → a ∈ Z∗n , denn p6 |a und q6 |a • a F -Zeuge (Kontraposition) an−1 ≡ 1 mod n g n−1 ≡ an−1 ≡ 1 mod p 129 Beweis (Fortsetzung): g n−1 ≡ g p−1 ≡ 1 mod p ր g Generator von Zp∗ 4.2.7(b) −→ −→ −→ −→ (p − 1) | (n − 1) − (p − 1) (p − 1) | (n − 1) (p − 1) | p · q − 1 | {z } =(p−1)·q+(q−1) (p − 1) | (q − 1) p>q 130 Nichttriviale Quadratwurzeln von 1 Definition 5.2.1: a ist Quadratwurzel von 1 modulo n mit 1 ≤ a < n, wenn a2 ≡ 1 mod n Lemma 5.2.2: p ist Primzahl und 1 ≤ a < p mit a2 ≡ 1 mod p, dann a = 1 oder a = p − 1 տ ր triviale Quadratwurzeln Beweis: (a2 − 1) mod p = (a + 1)(a − 1) mod p = 0 → p | (a + 1) oder p | (a − 1) → a = p − 1 oder a = 1 131 Beobachtung: n = p1 · . . . · pr , pi 6= pj für i 6= j und pi > 2, 1 ≤ i ≤ r hat 2r Quadratwurzeln von 1 modulo n: a, 0 ≤ a < n mit a mod pj ∈ {1, pj − 1}, 1 ≤ j ≤ r (# = 2r Chinesischer Restklassensatz) Konsequenz: Zufällige Suche von nichttrivialen Quadratwurzeln von 1 modulo n für Zahlen n mit wenigen Primfaktoren nicht vielversprechend 132 n − 1 = u · 2k , k| {z ≥ 1} n ungerade k an−1 ≡ ((au ) mod n)2 mod n ր also: Berechnung von an−1 mod n in (k + 1) Schritten möglich b0 ≡ au mod n bi ≡ (bi−1 )2 mod n, 1 ≤ i ≤ k 133 Beispiel: n (n − 1) a 2 7 32 49 65 126 201 224 = 325 = 52 · 13 = 324 = 81 · 22 b0 ≡ a81 mod 325 252 307 57 324 0 1 226 274 b1 ≡ a162 mod 325 • 2 F -Zeuge für 325 in Z∗325 • 7,32,49,126,201,224 F -Betrüger 129 324 324 1 0 1 51 1 b2 ≡ a324 mod 325 66 1 1 1 0 1 1 1 • 65 F -Zeuge nicht in Z∗325 • 51,274 nichttriviale Quadratwurzeln von 325 134 Mögliche Folgen b0 , . . . , bk (für a mit 1 ≤ a < n − 1) b0 1 n−1 ∗ ∗ ∗ ∗ ∗ b1 1 1 ∗ ∗ ∗ ∗ ∗ ... ... ... ... ... ... ... ... ... 1 1 ∗ ∗ ∗ ∗ ∗ 1 1 n−1 ∗ ∗ 1 ∗ 1 1 1 ∗ ∗ 1 ∗ ... ... ... ... ... ... ... bk −1 bk 1 1 1 ∗ ∗ 1 ∗ 1 1 1 n−1 ∗ 1 1 PLATZHALTER keine Information, ob n Primzahl a ist F -Zeuge Entdeckung nichttrivialer Quadratwurzeln modulo n b0 6= 1 und n − 1 taucht nicht auf → Wert für bk unwichtig 135 Definition 5.2.3: n−1= u |{z} 2k , k ≥ 1 ggT (u,2)=1 a, 1 ≤ a < n, A-Zeuge für n, wenn - au ≡ 1 mod n und i u·2 ≡ - a n − 1 mod n für alle i mit 0 ≤ i < k n zusammengesetzt: a kein A-Zeuge für n, dann A-Betrüger für n Lemma 5.2.4: a A-Zeuge für n → n zusammengesetzt 136 i • Artjukov (1966/67): Vorschlag bi ≡ au2 mod n, 0 ≤ i ≤ k, | {z } nutzen, um zu testen, ob n zusammengesetzt in russisch • Miller (1976): unter Annahme Erweiterter Riemannscher Hypothese kleinster A-Zeuge für zusammengesetzte Zahl n in O(ln2 n) • Rabin (1980): Millers det. Suche für A-Zeuge → randomisierte Suche • Bach (1990): Verbesserung auf 2 ln2 n −→ deterministischer Primzahltest mit O(log n) arithmetischen Operationen unter Erweiterter Riemannscher Hypothese 3 137 Algorithmus 5.2.5: Miller-Rabin Test Eingabe: ungerade Zahl n ≥ 3 1 Suche u und k mit n − 1 = u · 2k und ggT (u, 2) = 1; 2 Wähle a zufällig gleichverteilt aus {2, . . . , n − 2}; 3 b ← au mod n; 4 if b ∈ {1, n − 1} then return 1; 5 repeat k − 1 mal 6 7 b ← b2 mod n; if b = n − 1 then return 1; 8 if b = 1 then return 0; 9 return 0; 138 Laufzeit: 1 Höchstens log n Divisionen, um u und k zu bestimmen (schneller mit Shift-Operationen) 3 au mod n mittels Schneller Exponentiation (Algo 2.3.3) O(log n) arithmetische Operationen, O(log3 n)(Õ(log2 n)) Bit-Operationen 5-8 k − 1 < log n Schleifendurchläufe Multiplikation mod n teuerste Operation → O(log n) arithmetische Operationen, O(log3 n)(Õ(log2 n)) Bit-Operationen 139 Lemma 5.2.6: Miller - Rabin Test ist co-RP-Algorithmus für Primzahltest Beweis: z.z. Ausgabe 0 → A-Zeuge gefunden 1. Fall: Zeile 8 2. Fall: Zeile 9 i au2 ≡ 1 mod n für ein i ∈ {1, . . . , k − 1} j und au2 6≡ n − 1 mod n, j < i → a A-Zeuge i au2 mod n ∈ {1, n − 1} für alle i ∈ {1, . . . , k − 1} → a A-Zeuge 140 Fehlerwahrscheinlichkeit Miller-Rabin Test (n zusammengesetzte, ungerade Zahl) Erinnerung: Analyse Fermat Test: LFn (echte) Untergruppe von Z∗n ր F-Betrüger Hier: Menge der A-Betrüger nicht notwendigerweise (echte) Untergruppe von Z∗n Beispiel: n=325, 7 und 32 A-Betrüger 7 · 32 mod 325 = 224 A-Zeuge → nicht abgeschlossen Ausweg: Nachweis einer echten Untergruppe von Z∗n , die alle A-Betrüger enthält 141 F ∗ LA n ⊆ Ln ⊆ Zn 1. Fall: Z∗n enthält F-Zeugen, d. h. LFn ( Z∗n Argumentation analog Beweis Satz 5.1.5 X 2. Fall: LFn = Z∗n →n Carmichaelsche Zahl gesucht: echte Untergruppe BnA von Z∗n , A die alle A-Betrüger enthält, also LA n ⊆ Bn i i0 := max i ≥ 0:∃ A-Betr. a0 mit au·2 ≡ n − 1 mod n 0 ր ւ ggT(u, 2) = 1 i existiert, denn (n − 1)u ≡ (−1)u ≡ −1 mod n 0 ≤ i0 < k , denn a0u·2 k mod n = 1 mod n = an−1 0 ր Carmichaelsche Zahl 142 i BnA := {a | 0 ≤ a < n, au·2 0 mod n ∈ {1, n − 1}} Lemma 5.3.1: A (a) LA n ⊆ Bn (b) BnA Untergruppe von Z∗n (c) Z∗n − BnA 6= ∅ → Fehlerwahrscheinlichkeit Miller-Rabin Test höchstens 1 2 Probability amplification → Fehlerwahrscheinlichkeit höchstens ( 21 )l 143 Beweis Lemma 5.3.1: (a) a A-Betrüger 1. Fall: 2. Fall: au mod n = 1 i → au·2 0 mod n = 1 →a ∈ BnA i ∃ i:au·2 mod n = n − 1 Def i0 −−−→ 0 ≤ i ≤ i0 • i = i0 →a ∈ BnA X i i i −i • i < i0 →au2 0 mod n = au2 ·2 0 mod n i i −i = (au2 mod n)2 0 mod n 144 Beweis (Fortsetzung): Lemma 4.1.6 (b) −−−−−→ reicht z. z. i (i) 1 ∈ BnA , denn 1u·2 0 mod n = 1 (ii) BnA abgeschlossen unter · mod n in Z∗n i a, b ∈ BnA :(ab)u2 0 mod n i0 i0 = ((au2 mod n)·(bu2 mod n) ) mod n | {z }| {z } | ∈{1,n−1} ∈{1,n−1} {z ∈{1,n−1} → (ab) mod n ∈ BnA } 145 Beweis (Fortsetzung): (c) n = n1 · n2 ր տ Carmichaelsche Zahl ggT(n1 , n2 ) = 1 i 0 au·2 ≡ −1 mod n 0 ↑ տ A-Betrüger n − 1 a ≡ a0 a≡1 mod n1 mod n2 Lemma 5.1.8: Carmichaelsche Zahlen - ungerade - mindestens drei verschiedene Primfaktoren Chinesischer Restklassensatz −−−−−−→ a ∈ {0, . . . , n − 1} eindeutig 146 Beweis (Fortsetzung): z.z. a ∈ Z∗n − BnA i • au·2 0 i au·2 0 i ≡ (a mod n1 )u·2 0 ≡ −1 mod n1 i a ≡ a0 mod n1 a ≡ 1 mod n2 i → au·2 0 6≡ 1 mod n i (denn: au·2 0 ≡ 1 mod n i → au·2 0 ≡ 1 mod n1 ) ≡ (a mod n2 )u·2 0 i ≡ 1u·2 0 i → au·2 0 6≡ −1 mod n ≡ 1 mod n2 i −→ au·2 0 mod n ∈ {1,)n − 1}→a ∈ BnA i +1 Chines. i +1 • au·2 0 mod n1 = 1 Restklassensatz −→ au·2 0 mod n = 1 i0 +1 u·2 a mod n2 = 1 Lemma −→ 5.1.3 (a) a ∈ Z∗n X 147 Randomisierte Primzahltests: Solovay-Strassen-Test Quadratische Reste Quadratzahlen“ in Gruppe (Z∗m , · mod m): ” Definition 6.1.1: m ≥ 2, a ∈ Z mit ggT(a, m) = 1: a ist Quadratischer Rest modulo m, wenn a ≡ x 2 mod m, x ∈ Z Sonst Nichtquadratischer Rest modulo m Bemerkung: a mit ggT(a, m) > 1 weder Quadratischer noch Nichtquadratischer Rest modulo m 148 Beispiel: • m = 13: #Quadratische Reste modulo 13: 6 1 2 3 4 5 6 7 8 9 10 11 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 1 4 9 3 12 10 10 12 3 9 4 12 ↓ 1 Quadratische Reste modulo 13: 1, 3, 4, 9, 10, 12 • m = 26 = 2 · 13: #Quadratische Reste modulo 26: 6 1 2 3 4 5 6 7 8 9 10 11 12 13 ↓ ↓ ↓ ↓ ↓ ↓ 1 9 25 23 3 17 14 15 16 17 18 19 20 21 22 23 24 25 ↓ ↓ ↓ ↓ ↓ ↓ 17 3 23 25 9 1 149 Beobachtung: m=p տ Primzahl • x 2 ≡ (p − x)2 mod p → höchstens 12 (p − 1) verschiedene Quadratische Reste modulo p 2 • x ≡ y 2 mod p, 1 ≤ x ≤ y < 21 (p − 1) 0≤y−x<x+y<p → p | y 2 − x 2 −−−−−−−−−−→ y = x oder y = p − x | {z } (y+x)(y−x) → jeder Quadratische Rest modulo p hat zwei Quadratwurzeln“ modulo p, d.h. x ∈ Zp∗ mit ”2 x ≡ a mod p 150 Lemma 6.1.3: Euler Kriterium p ungerade Primzahl QRp Untergruppe von Zp∗ mit 12 (p − 1) Elementen modulo p տ Quadratische Reste modulo p a ∈ Zp∗ : a(p−1)/2 = ↑ · mod p 1, wenn a Quadratischer Rest modulo p −1, wenn a Nichtquadratischer Rest modulo p 151 Beweis: Zp∗ zyklisch (Satz 4.4.3), g erzeugendes Element/Generator g p−1 = 1 → տ · mod p g (p−1)/2 6= 1 und (g (p−1)/2 )2 = 1 → g (p−1)/2 = −1 - g 2i , 0 ≤ i < (p − 1)/2 Quadratische Reste modulo p (g 2i )(p−1)/2 = g i(p−1) = 1 X - g 2i+1 Nichtquadratische Reste modulo p (g 2i+1 )(p−1)/2 = g i(p−1) · g (p−1)/2 = −1 k k 1 −1 152 Lemma 6.1.4: p ungerade Primzahl mit p ≡ 3 mod 4 Für jeden Quadratischen Rest modulo p a ∈ Zp∗ gilt für x = a(p+1)/4 : x 2 = a տր · mod p Beweis: g erzeugendes Element von Zp∗ a = g 2i Quadratischer Rest modulo p i(p−1) x = a(p+1)/4 = g 2i(p+1)/4 = g 2 +i = (−1)i g i ր (p−1)/2 g = −1 2 i i 2 2i x = ((−1) g ) = 1 · g = a (p-x weitere Quadratwurzel von a) 153 Definition 6.1.5: Legendre Symbol (von a und p) p ungerade Primzahl, a ∈ Z wenn a Quadratischer Rest modulo p 1, a wenn a Nichtquadratischer Rest modulo p p = −1, 0, wenn a Vielfaches von p 154 Lemma 6.1.6: p ungerade Primzahl (a) a·b p (b) a·b 2 p (c) a+cp p (d) −1 p = = = a p a p · b p , a, b ∈ Z , a, b ∈ Z und p6 | b a p , a, c ∈ Z = (−1)(p−1)/2 a p = a mod p p p − 1 Quadratischer Rest modulo p ⇔ p ≡ 1 mod 4 155 Beispiel: p = 11, a = 3 • 3(11−1)/2 ≡ 243 ≡ 1 mod 11 Euler Kriterium −−−−−−→ 3 Quadratischer Rest modulo 11 • 3(11+1)/4 ≡ 27 ≡ 5 mod 11 −−−−−−→ 5 und 11 − 5 = 6 Quadratwurzeln von 3: -52 ≡ 25 ≡ 3 mod 11 -62 ≡ 36 ≡ 3 mod 11 156 Definition 6.2.1: Jacobi Symbol (von a und n) n =p1 · p2 · . . . · pk , pi 6= 2 für 1 ≤ i ≤ k | {z } Primfaktorzerlegung a ∈ Z a n = a p1 · a p2 · ... · a pk Beobachtung: n Primzahl: Jacobi Symbol von a und n =ˆ Legendre Symbol 157 Beobachtung: • na für ggT(a, n) > 1: ∃i: pi | a → na = 0 ր Primfaktor von n • a n für ggT(a, n) = 1: ր zeigt nicht wie Legendre Symbol an, ob a Nichtquadratischer Rest modulo n ist Beispiel: 2 2 2 = 15 3 · 5 = (−1) · (−1) = 1 158 Lemma 6.2.2: n, m ≥ 3, ungerade, a, b ∈ Z b a (a) a·b = n n · n ; 2 (b) a·b = na für ggT(b, n) = 1; n a a (c) n·m = an · m ; a a (d) n·m 2 = n für ggT(a, m) = 1 (e) a+cn = an , c ∈ Z n n → na = a mod ; n 2k 2k +1 (f) 2 n ·a = na und 2 n ·a = n2 · (n−1)/2 ; (g) −1 n = (−1) (h) n0 = 0 und n1 = 1. a n , k ≥ 1; 159 Beweis: (a),(b) (c),(d) (e) (f) : Rechenregeln“ für Legendre Symbol ” X : Rechenregeln“ für Legendre Symbol ” X Lemma 6.1.6 Rechenregeln“ für ” Legendre Symbol (g) → (h) −1 n z { }| −1 −1 = ··· p1 pk տ ր = (−1)(pi −1)/2 , 1 ≤ i ≤ k ր −1 ⇔ pi ≡ 3 mod 4 alle Primfaktoren von n, also n = p1 · · · pk = (−1)sտ #pi mit pi ≡ 3 mod 4 n ≡ (p1 mod 4) · · · (pk mod 4)≡ (−1)s mod 4 1 2 (n − 1) ungerade ⇔ s ungerade X X 160 Jacobi Symbol \a n\ 3 5 7 9 11 → 13 15 17 19 21 23 25 27 29 3 0 -1 -1 0 1 1 0 -1 -1 0 1 1 0 -1 5 -1 0 -1 1 1 -1 0 -1 1 1 -1 0 -1 1 7 1 -1 0 1 -1 -1 -1 -1 1 0 -1 1 1 1 9 0 1 1 0 1 1 0 1 1 0 1 1 0 1 a n 11 -1 1 1 1 0 -1 -1 -1 1 -1 -1 1 -1 -1 ↓ 13 1 -1 -1 1 -1 0 -1 1 -1 -1 1 1 1 1 15 0 0 1 0 1 -1 0 1 -1 0 -1 0 0 -1 17 -1 -1 -1 1 -1 1 1 0 1 1 -1 1 -1 -1 19 1 1 -1 1 -1 -1 1 1 0 -1 -1 1 1 -1 21 0 1 0 0 -1 -1 0 1 -1 0 -1 1 0 -1 23 -1 -1 1 1 1 1 1 -1 1 -1 0 1 -1 1 25 1 0 1 1 1 1 0 1 1 1 1 0 1 1 27 0 -1 -1 0 1 1 0 -1 -1 0 1 1 0 -1 29 -1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 0 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 2 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 161 Satz 6.3.1: Quadratisches Reziprozitätsgesetz m, n ungerade n m , wenn n ≡ 1 oder m ≡ 1 mod 4 m n = n , wenn n ≡ 3 und m ≡ 3 mod 4 − m Proposition 6.3.2: n ungerade 1, wenn n ≡ 1 oder n ≡ 7 mod 8 2 n = −1, wenn n ≡ 3 oder n ≡ 5 mod 8 162 Berechnung des Jacobi Symbols (1) a 6∈ {1, . . . , n − 1}: (2) a = 0: 0 (3) a = 1: 1 a/4 n (4) 4 | a: (5) 2 | a: − a/2 n , a/2 n , a mod n n a n ,n ≥ 3 wenn n mod 8 ∈ {1, 7} wenn n mod 8 ∈ {3, 5} (6) a > 1 und a ≡ 1 mod 4 oder n ≡ 1 mod 4: a (7) a ≡ 3 mod 4 und n ≡ 3 mod 4: − n mod a n mod a a 163 Beispiel: • 773686 mod 1373 = 1 −→ Quadratischer Rest modulo 1373 • 773 1373 (6) = (4) 150 (5) 75 = 773 = − 773 (7) 6 (5) 3 (6) = − 23 = 23 = 23 75 (5) (3) (6) = − 23 = 13 = 1 600 773 164 Algorithmus 6.3.3: Eingabe: a Integer, n ≥ 3 ungerade 0 1 2 3 4 5 6 7 8 9 10 11 b, c, s: Integer; b ← a mod n; c ← n; s ← 1; while b ≥ 2 repeat while 4 | b repeat b ← b/4; if 2 | b then if c mod 8 ∈ {3, 5} then s ← (−s); b ← b/2; if b = 1 then break; if b mod 4 = c mod 4 = 3 then s ← (−s); (b, c) ← (c mod b, b); return s · b; 165 Proposition 6.3.4: Algorithmus 6.3.3 bestimmt na # Iterationen while-Schleife 3-10 ist O(log n) Beweis: Invariante: s b c = a n zu jedem Zeitpunkt, wenn 2, 4, 7 oder 10 ausgeführt wird = = 2 zu Beginn Lemma 6.2.2 (e) a+cn n 4 ab 2 n Lemma 6.2.2 (b) oder (f) 22k a n = X X a n a n a n , ggT(b, n) = 1 166 Beweis (Fortsetzung): 7: b ← b/2 −→ b ungerade (4 →b 6≡ 0 mod 4) 6.2.2(a) 2 b/2 6: c mod 8 ∈ {3, 5} → bc = c c 6.3.2 = −1 2|b 8: b = 1 → while-Schleife (3) wird verlassen ( c1 ) = 1 → Ergebnis in s Voraus. = − bc wenn b ≡ 3 mod 4 und c ≡ 3 mod 4 ր s ← (−s) c mod b 9: b ≥ 3 ungerade: 10: c b b c = b ր 6.2.2 (e) 167 Beweis (Fortsetzung): • # Iterationen: Analyse s.a. Algorithmus 3.2.1 Euklidischer Algorithmus Inhalt der Variablen b und c: (b0 , c0 ), (b1 , c1 ), . . . ct+2 ≤ 21 ct , t = 0, 1, 2, . . . c0 = n → höchstens 2knk = O(log n) Iterationen • Bit-Operationen - Division durch 2, 4: Streichen von Nullen - b mod 4, b mod 8: Inspektion der letzten 2, 3 Stellen - teuerste Operation: mod Operation (1), (10) → bezüglich Operationen vergleichbar zu Algorithmus 3.2.1 Euklidischer Algorithmus 168 Primzahl ւ Bestimmung, ob a Quadratischer Rest modulo p ist: • a(p−1)/2 mod p mittels Schneller Exponentiation • pa Jacobi Symbol mit Algorithmus 6.3.3 bestimmen (= ˆ Legendre Symbol) Ergebnis: 1, a Quadratischer Rest modulo p −1 ≡ p − 1, sonst Lemma 6.4.1: p ungerade Primzahl a(p−1)/2 · pa mod p = 1 für alle a ∈ {1, . . . , p − 1} 169 Definition 6.4.2: n ungerade, zusammengesetzte Zahl a, 1 ≤ a < n, heißt E-Zeuge für n, wenn a(n−1)/2 · na mod n 6= 1, sonst E-Betrüger Beispiele: n = 325 • a = 15: ggT(15, 325 = 5) → → 15 E-Zeuge für 325 15 325 =0 • a = 2: 2162 mod 325 = 129 → 2 E-Zeuge für 325 7 • a = 7: 7162 mod 325 = 324 und 325 = −1 → 7 E-Betrüger für 325 170 Lemma 6.4.4: n zusammengesetzte, ungerade Zahl: a E-Betrüger → a F-Betrüger Beweis: a E-Betrüger → 1 ≡ a(n−1)/2 · a n mod n → a n ∈ {1, −1} Lemma 6.4.5: n zusammengesetzte, ungerade Zahl: {a | a E-Betrüger für n} echte Untergruppe von Z∗n 171 Beweis Lemma 6.4.5: Lemma 5.1.3 (a): Menge der F-Betrüger Teilmenge von Z∗n E-Betrüger F-Betrüger Menge der E-Betrüger Teilmenge von Z∗n (i) 1 E-Betrüger (ii) a, b ∈ Z∗n E-Betrüger (a · b)(n−1)/2 a·b n mod n Lemma 6.2.2(a) = (a(n−1)/2 na mod n) · (b(n−1)/2 = 1·1 b n mod n) =1 172 Beweis (Fortsetzung): z.z. Z∗n enthält einen E-Zeugen 1.Fall: p2 | n, p ungerade Primzahl Beweis Lemma 5.1.8, 1. Fall: Konstrunktion F-Zeuge → E-Zeuge F-Betrüger E-Betrüger 2.Fall: n = p1 · p2 · . . . · pr , pi 6= pj für 1 ≤ i < j ≤ r n = p · m mit ggT(p, m) = 1, m ≥ 3 ↑ ungerade Primzahl Sei b ∈ Zp∗ Nichtquadratischer Rest modulo p, also bp = −1 173 Beweis (Fortsetzung): b p = −1 Chinesischer Restklassensatz sichert Existenz von a, 1 ≤ a < n, mit a ≡ b mod p und a ≡ 1 mod m Behauptung: a ∈ Z∗n und a E-Zeuge • p6 | a und ggT(a, m) = 1 | {z } ggT(a,n)=1X • a n = a p · a m = b p 1 m = −1 · 1 = −1 174 Beweis (Fortsetzung): a E-Betrüger → m|n → a(n−1)/2 ≡ −1 mod n a(n−1)/2 ≡ −1 mod m a ≡ 1 mod m −→ a E-Zeuge 175 Algorithmus 6.4.6: Solovay-Strassen-Test Eingabe: ungerade Zahl n ≥ 3 1 a zufällig aus {2, . . . , n − 2}; 2 if a(n−1)/2 · an mod n 6= 1 3 then return 0; 4 else return 1; 176 Proposition 6.4.7: Solovay-Strassen-Test ist co-RP-Algorithmus für Primzahltest Beweis: • Ausgabe 0 Lemma 6.4.1 −−−−−−−→ n zusammengesetzt • Fehlerw’keit: n zusammengesetzt und Ausgabe 1 → a E-Betrüger für n Lemma 6.4.5: Menge der E-Betrüger echte Untergruppe von Z∗n → höchstens 1 2 ϕ(n) E-Betrüger 177 Exkurs Algebra II Polynomringe Definition: R kommutativer unitärer Ring Ein Polynom über R ist ein Ausdruck der Form a0 X 0 + a1 X 1 + . . . + an X n mit ai ∈ R, 0 ≤ i ≤ n տ Koeffizient Ist an 6= 0 (Nullelement von R), so heißt n Grad des Polynoms n P Schreibweise: ak X k k=0 178 Frage: • 3X 3 + 0X 2 + 2X • 0X 4 + 3X 3 + 0X 2 + 2X + 0 • 2X + 3X 3 verschiedene Ausdrücke Verschiedene Polynome ? Beobachtung: Polynom über R beschreibbar als formal unendliche Koeffizientenfolge (a0 , a1 , a2 , . . .) mit höchstens endlich vielen Koeffizienten ungleich dem Nullelement von R 179 Definition 7.1.2: Polynomring Sei (R, +, ·, 0, 1) Ring Menge R[X ] definiert als Menge der (formal unendlichen) Folgen (a0 , a1 , . . .), a0 , a1 , . . . ∈ R, wobei alle bis auf endlich viele ai gleich 0 sind Elemente von R[X ]: Polynome über R (über einer Variablen) Vereinbarung: Schreibweise (a0 , a1 , . . . , ad ) erlaubt, wenn alle ai = 0 für i > d 180 Definition 7.1.3: Sei (R, +, ·, 0, 1) Ring. Für f = (a0 , a1 , . . .) und g = (b0 , b1 , . . .) aus R[X ] sei (a) f + g = (a0 + b0 , a1 + b1 , . . .) (b) f · g = (c0 , c1 , . . .) mit ci = (a0 · bi ) + (a1 · bi−1 ) + . . . + (ai · b0 ) für i = 0, 1, . . . (Offenbar: nur endlich viele ci ungleich 0) 181 Proposition 7.1.5: Wenn (R, +, ·, 0, 1) Ring, dann auch (R[X ], +, ·, (0), (1)) տր konstantes Null- bzw Einspolynom Beweis: Bedingungen (i) (R[X ], +, (0)) abelsche Gruppe Def 4.3.2 −−−−→ (ii) (R[X ], ·, (1)) Monoid (iii) Distributivitätsgesetz:(f + g) · h = f · h + g · h checken 182 Bemerkung: Zwischen konstanten Polynomen in R[X ] und Elementen von R besteht umkehrbar eindeutige Beziehung: Isomorphismus → R isomorph zu einem Unterring von R[X ] ր ↑ → Def. 7.1.10 (Folie 189) Unterring der konstanten Polynome 183 Ausgezeichnetes Element: X := (0, 1, 0, 0, . . .) Es gilt: X 2 := X · X = (0, 0, 1, 0, 0, . . .) X 3 := X · X 2 = (0, 0, 0, 1, 0, 0, . . .) .. . → (a0 , a1 , a2 , . . .) = a0 + a1 X 1 + a2 X 2 + . . . Vereinbarung: (a, 0, 0, . . .) = ˆ a∈R → (a0 , a1 , . . . , ad ) = d P ak X k k=0 Menge aller Polynome in X über R: R[X ] (kleinster Ring, der R umfasst und X enthält) 184 Definition 7.1.6: Grad von f Für f = (a0 , a1 , . . .) ∈ R[X ] sei ( −∞, wenn f Nullpolynom deg(f ) = max{i | ai 6= 0}, sonst Proposition 7.1.7: Für f ,g ∈ R[X ]: deg(f + g) ≤ max{deg(f ), deg(g)} und deg(f · g) ≤ deg(f ) + deg(g) 185 Lemma 7.1.9: Seien f , g ∈ R[X ]. (a) Ist f normiertes Polynom (höchster Koeffizient 1) gilt: deg(f · g) = deg(f ) + deg(g) (b) Ist a invertierbares Element (bezgl. ·) in R gilt: deg(a · g) = deg(g) (c) Ist f 6= 0 mit invertierbarem Element als höchsten Koeffizienten gilt: deg(f · g) = deg(f ) + deg(g) 186 Definition 7.1.10: Unterring Sei (S, +, ·, 0, 1) Ring R ⊆ S Unterring von S, wenn R Elemente 0 und 1 enthält und abgeschlossen ist unter + und · und (R, +, ·, 0, 1) Ring ist Definition 7.1.12: Sei R Unterring von S und s ∈ S Für f = (a0 , a1 , . . . , ad ) = ad X d + . . . + a1 X + a0 ∈ R[X ] sei f (s) = ad s d + . . . + a1 s 1 + a0 f (s) entsteht durch Substitution von s in f 187 Proposition 7.1.13: (a) f (s) = a, wenn f = a ∈ R (b) f (s) = s, wenn f = X (c) (f + g)(s) = f (s) + g(s) und (f · g)(s) = f (s) · g(s) für alle f , g ∈ R[X ] Beobachtung: Beispiel: f ∈ Z3 [X ] mit f = 2X 3 + X 2 + 2 f 3 = (2X 3 + X 2 + 2) · (2X 3 + X 2 + 2) · (2X 3 + X 2 + 2) = 2X 9 + X 6 + 2 = f (X 3 ) 188 Proposition 7.1.15: Sei p Primzahl. (a) (f + g)p = f p + g p und (f · g)p = f p · g p für f , g ∈ Zp [X ] (b) f ∈ Zp [X ]: f p = f (X p ) für k ≥ 0 k k Beweis: (a) (f + g)p = ր fp + p−1 X j=1 p f j g p−j + g p = f p + g p j {z } Binomischer Satz | alle Koeffizienten für Ring Zp [X ] Vielfache von p (f · g)p : Kommutativität der Multiplikation in Zp [X ] 189 Beweis (Fortsetzung): k k z.z. f p = f (X p ) Induktion: k = 0: f = f (X ) X k = 1: f = ad X d + . . . + a1 X + a0 (a) → p p p f p = ad (X d )p + . . . + a1 X p + a0 տ kl. Satz von Fermat: →ad = ad (X p )d + . . . + a1 X p + a0 = f (X p ) Induktionsschluss: k f p = (f p k −1 )p = (f (X p k −1 ))p = f ((X p )p k −1 k ) = f (X p ) 190 Division mit Rest und Teilbarkeit für Polynome Beobachtung: R[X ] kann kein Körper sein, denn (0, 1) · (a0 , a1 , . . .) = (0, a0 , a1 , . . .) 6= (1) ր konstantes Einspolynom, neutrales Element von · 191 Proposition 7.2.1: (→ 3.1.8) Sei R Ring und h ∈ R[X ] ein normiertes Polynom (oder nicht das konstante Nullpolynom, dessen höchster Koeffizient invertierbar ist). Dann existieren für jedes f ∈ R[X ] eindeutige Polynome q, r ∈ R[X ] mit f = h · q + r und deg(r ) < deg(h). Beweis: z.z. • Existenz • Eindeutigkeit 192 Beweis (Fortsetzung): Existenz Annahme: h = (a0 , a1 , . . . , ad−1 , 1) Induktion über d’=deg(f ) • d’ < d: q = 0, r = f • Induktionsschluss: = ˆ h normiertes Polynom X f = (b0 , . . . , bd’ ) f1 = f − bd’ X d’−d h −−−→ f1 = (b0′ , . . . , bd′ ′ −1 , bd ′ − bd ′ · 1) | {z } 0 −−−→ deg(f1 ) < deg(f ) Ind. annahme −−−→ f1 = h q1 + r mit deg(r ) < d Wähle q:= bd’ · X d’−d + q1 X 193 Allgemeiner: h = (a0 , . . . , ad ), ad invertierbar mit u·ad = 1 | {z } in R h1 := u · h Folie 193 −−−→ f = h1 · q + r = h · (u · q) + r , q, r ∈ R[X ] und deg(r ) < deg(h1 ) = deg(h) ր Lemma 7.1.9 X 194 Beweis 7.2.1 (Fortsetzung): Eindeutigkeit 1. Fall: f = 0 → q = 0 und r = 0, denn h · q + r = 0 mit deg(r ) < deg(h) −−−→ deg(r ) = deg(h · q) 7.1.9 (c) −−−→ deg(h) + deg(q) < deg(h) −−−→ deg(q) = −∞ −−−→ q = 0 −−−→ r = 0 X 195 Beweis (Fortsetzung): 2. Fall: f 6= 0 Sei f = h q1 + r1 = h q2 + r2 −−−→ 0 = h (q1 − q2 ) + (r1 − r2 ) mit deg(r1 − r2 ) ≤ max{deg(r1 ), deg(r2 )} < deg(h) 1. Fall: −−−→ q1 − q2 = r1 − r2 = 0 −−−→ q1 = q2 und r1 = r2 X 196 Beispiel: Polynomdivision R= Z15 f = 4X 4 + 5X 2 + 6X + 1 h = X2 + 6 ր h normiertes Polynom f − 4X 2 h = 4X 4 + 5X 2 + 6X + 1 − (4X 4 + 9X 2 ) = 11X 2 + 6X + 1 = f1 f1 − 11h = 11X 2 + 6X + 1 − (11X 2 + 6) = 6X + 10 = f2 deg(f2 ) < deg(h) → f = (4X 2 + 11)·h + (6X + 10) 197 Algorithmus 7.2.2: Polynomdivision Eingabe: f (Koeffizienten in f [0 . . . d ′ ]) ∈ R[X ] h (Koeffizienten in h[0 . . . d]; h[d] invertierbar) 1 2 3 4 5 6 7 8 9 10 q[0 . . . d ′ − d], r [0 . . . d − 1]: Arrays über R; a:R; finde eindeutiges Element u ∈ R mit u · h[d] = 1; for i from d ′ downto d do a ← u · f [i]; q[i − d] ← a; for j from i downto i − d do f [j] ← f [j] − a · h[j − i + d]; for i from 0 to d − 1 do r [i] ← f [i]; return (q[0 . . . d ′ − d]), (r [0 . . . d − 1]); 198 Zur Analyse Algorithmus 7.2.2 Polynomdivision 7-8 j-Schleife Polynom f [i] · u · h · X i−d subtrahiert von (f [0], . . . , f [d ′ ]) | {z } aktueller Inhalt → f [i] = 0 5-6 f [i] · u · h · X i−d addiert zu h · (q[0], . . . , q[d ′ − d]) −→ (f [0], . . . , f [d ′ ]) + h(q[0], . . . , q[d ′ − d]) unverändert 199 Zur Analyse Algorithmus 7.2.2 (Fortsetzung) Polynomdivision i = d ′ bis i = d → nach i-Schleife: f [d] = . . . = f [d ′ ] = 0 # Operationen in R: O((d ′ − d)d) Bemerkung: Hat h wenige Koeffizienten ungleich 0, effizientere Implementierung möglich (j-Schleife in 7-8 ersetzen) Vorschau: Kapitel 8 h = X r − 1 200 Definition 7.2.3: Seien f , h ∈ R[X ]. h teilt f , wenn f = h · q für ein q ∈ R[X ]. Gilt 0 < deg(h) < deg(f ), heißt h echter Teiler von f . Beobachtung: Höchster Koeffizient von h invertierbar → q eindeutig 201 Definition 7.2.4: Sei h ∈ R[X ] ein Polynom, dessen höchster Koeffizient invertierbar ist. f , g ∈ R[X ]: f ≡ g (mod h), wenn f − g teilbar durch h ր f und g sind ւ Äquivalenzrelation kongruent modulo h g =f +h·q für eindeutiges Polynom q ∈ R[X ] 202 Lemma 7.2.5: Sei h ∈ R[X ] − {0} normiertes Polynom, f1 ≡ f2 (mod h) und g1 ≡ g2 (mod h): (a) f1 + g1 ≡ f2 + g2 (mod h) (b) f1 · g1 ≡ f2 · g2 (mod h) (c) f (g1 ) ≡ f (g2 ) (mod h) für alle f ∈ R[X ] 203 Beweis: Sei f1 − f2 = h · qf und g1 − g2 = h · qg (a), (b): (f1 + g1 ) − (f2 + g2 ) = h · (qf + qg ) (f1 · g1 ) − (f2 · g2 ) = (f1 − f2 ) · g1 + f2 · (g1 − g2 ) = h · (qf · g1 + f2 · qg ) (c): • f = a, a ∈ R f =X X • (b) (wiederholt) f = aX s , a ∈ R und s ≥ 0 X (a) (wiederholt) f = ad X d + . . . + a1 X + a0 X 204 Lemma 7.2.6: Seien h, h′ ∈ R[X ] normierte Polynome, wobei h′ das Polynom h teilt. Dann gilt für alle f , g ∈ R[X ]: f ≡ g (mod h) →f ≡ g (mod h′ ). Beweis: Sei h = ĥ · h′ und f − g = q · h. → f − g = q · (ĥ · h′ ) = (q · ĥ) · h′ → f ≡ g (mod h′ ) 205 Lemma 7.2.7: Sei h ∈ R[X ] ein normiertes Polynom mit d = deg(h) ≥ 0. Für jedes f ∈ R[X ] existiert genau ein Polynom r ∈ R[X ], deg(r ) < d, mit f ≡ r (mod h). Beweis: Folgt aus Proposition 7.2.1 → Analog zur modulo-Rechnung über ganze Zahlen 206 Restklassenringe von Polynomen Definition 7.3.1: (R, +, ·, 0, 1) Ring, h ∈ R[X ], d = deg(h) ≥ 0, ր normiertes Polynom R[X ] | (h):= Menge aller Polynome aus R[X ] mit Grad kleiner als d und +h : f +h g ≡ (f + g) mod h f , g ∈ R[X ] ·h : f ·h g ≡ (f · g) mod h 207 Beispiel: h = X 4 + 3X 3 + 1 aus Z12 [X ] Z12[X ]| (h) enthält alle Polynome aus Z12[X ] von maximal Grad 3 (#124 ) f = 2X 3 , g = X 2 + 5 f ·h g ≡ (2X 3 ) · (X 2 + 5) mod (X 4 + 3X 3 + 1) = 4X 3 + 10X + 6 2X 3 · (X 2 + 5) = 2X 5 + 10X 3 ≡ 2X 5 + 10X 3 −2X h ≡ 6X 4 + 10X 3 + 10X −6h ≡ 4X 3 + 10X + 6 (mod h) 208 Proposition 7.3.3: (R, +, ·, 0, 1) Ring, h ∈ R[X] mit d = deg(h) ր normiertes Polynom (R[X] | (h), +h , ·h , (0), (1)) unitärer Ring mit (a) f mod h = f ⇔ deg(f ) < d (b) (f + g) mod h = ((f mod h) + (g mod h)) mod h, (f · g) mod h = ((f mod h) · (g mod h)) mod h (c) g1 ≡ g2 (mod h) → f (g1 ) mod h = f (g2 ) mod h f , g, g1 , g2 ∈ R[X] 209 Irreduzible Polynome und Faktorisierung Teilbarkeitslehre der ganzen Zahlen auf Polynomringe R[X] übertragbar, sofern R Körper ist: reduzible Polynome = ˆ ganzen Zahlen mit echten Teilern irreduzible Polynome = ˆ Primzahlen Definition 7.4.1: f ∈ F [X] − {0} heißt irreduzibel, wenn f keinen echten Teiler |{z} Körper hat, d.h. aus f = g · h , g, h ∈ F [X], folgt g ∈ F ∗ oder deg(g) = deg(f ). 210 Beispiel: Z5 [X] • f1 = X 2 + 4X + 1 irreduzibel, denn f1 hat keine Nullstelle in Z5 , also c ∈ Z mit f1 (c) = 0 Annahme: f1 = (a + bX ) · (a′ + b′ X ) տ ր → f1 (−ab−1 ) = 0 6= 0 jedoch: f1 = 2 · (3X 2 + 2X + 3) f und g assoziiert, wenn f = a · g, a ∈ Repräsentanten normierte Polynome F∗ ց Äquivalenzrelation 211 Beispiel: • f = 3X 3 + 2X 2 + 4X + 1 nicht irreduzibel, denn f = (X + 4) · (3X 2 + 4) = 3(X + 4) · (X 2 + 4) Beobachtung: Irreduzibilität eines Polynoms abhängig von zugrundeliegendem Körper: f ∈ Q[X] mit f ∈ Z2 [X]: f f = X 2 + 1 irreduzibel = X2 + 1 = (X + 1) · (X + 1) 212 Lemma 7.4.2: (→ Proposition 3.1.13) h ∈ F [X] irreduzibel, f ∈ F [X] und h kein Teiler von f , dann existieren s, t ∈ F [X] mit 1=s·h+t ·f Beweis: I = {s · h + t · f | s, t ∈ F [X]} , offensichtlich: I − {0} 6= ∅ Sei g = s · h + t · f aus I − {0} mit minimalem Grad d Behauptung: g teilt sowohl h als auch f h irreduzibel :-) → h = g · q −−−−→ 1) g = a ∈ F ∗ 2) q = b ∈ F ∗ unmöglich 213 Beweis: Behauptung: g teilt sowohl f als auch h: g teilt f : f = g · q + r , deg(r ) < deg(g) տր eindeutig Proposition 7.2.1 r = f − gq = (−s · q) · h + (1 − tq) · f | {z } ր ∈I g =s·h+t ·f g minimalen Grad in I −−−−−−−−→r = 0 → f = gq g teilt h: analog 214 Beweis: Behauptung −−−−→ h = g · q , q ∈ F [X] 1. Fall: g = a , a ∈ F ∗ 1 = a−1 · g = (a−1 · s) · h + (a−1 · t) · f X 2. Fall: q = b, b ∈ F ∗ f = g · q ′ , q ′ ∈ F [X] = q ′ (b−1 · h) = (b−1 · q ′ ) · h h teilt f nicht 215 Lemma 7.4.3: h ∈ F [X] irreduzibel, ist f ∈ F [X] teilbar durch h und f = g1 · g2 , dann teilt h das Polynom g1 oder g2 Beweis: Sei f = h · q Annahme: h teilt g1 nicht Lemma 7.4.2 −−−−−→ ∃ s, t ∈ F [X] mit 1 = s · h + t · g1 → g2 = g2 · s · h + t · f = g2 · s · h + t · h · q → g2 durch h teilbar 216 Theorem 7.4.4: Eindeutige Faktorisierung von Polynomen f ∈ F [X] − {0} darstellbar als a · h1 · ... · hs , s ≥ 0, a ∈ F ∗ und h1 , ..., hs normierte nichtkonstante Polynome aus F [X] Darstellung bis auf Reihenfolge der Faktoren eindeutig Beweis: • Existenz: Induktion über deg(f ) = d - f = a ∈ F∗ : f = a · 1 |{z} leeres Produkt - f = aα X α + ... + a1 X + a0 • f irreduzibel a = aα , h1 = a−1 · f 217 Beweis (Fortsetzung): z.z. f = a · h1 · ... · hs • f reduzibel, d.h. f = g1 · g2 , g1 , g2 ∈ F [X] und deg(g1 ) > 0, deg(g2 ) > 0 Lemma 7.1.9 (c) −−−−−−−−→ deg(f ) = deg(g1 ) + deg(g2 ) −−−−−−−−→ deg(g1 ) < d und deg(g2 ) < d Induktionsannahme −−−−−−−→ f = (a′ h1′ . . . hs′ 1 ) · (a′′ h1′′ . . . hs′′2 ) {z } | {z } | Darstellung für g1 Darstellung für g2 218 Beweis (Fortsetzung): • Eindeutigkeit: Widerspruchsbeweis Annahme: f = a · h1 . . . hs = a′ h1′ . . . ht′ , wobei f Polynom minimalen Grades mit 2 Darstellungen Verallgemeinertes Lemma 7.4.3 h′ , hg irreduzibel 1 Polynom a′ h′ . . . h′ hat 2 −−−−−−−−→ h1′ teilt hg −−−−−−−→ h1′ = hg −→ Darstellungen2 und t kleineren Grad als f 219 Anmerkung: (Natürlich im allgemeinen) kein polynomieller Algorithmus bekannt, der zu einem Polynom Darstellung mittels irreduzibler Polynome generiert Eindeutige Faktorisierung von Polynomen wird als Aussage beim Korrektheitsbeweis des AKS-Algorithmus benötigt 220 Theorem 7.4.5: F Körper, h ∈ F [X] normiertes irreduzibles Polynom, dann F [X] | (h) Körper (F endlich → F [X] | (h) hat | F |deg(h) Elemente) Beweis: F [X] | (h) Ring (Propos. 7.3.3) reicht z.z. jedes El. aus F [X] | (h) − {0} hat inverses El. bzgl. ·h f ∈ F [X] | (h) → deg(f ) < deg(h) → h kann f nicht teilen Lemma 7.4.2 −−−−−→ 1 = s · h + t · f 1≡t ·f ≡ (t mod h) | {z } · f (mod h) multiplikatives Inverses von f 221 Proposition 7.4.6: F Körper, h ∈ F [X] normiertes irreduzibles Polynom, dann ζ = (X mod h) Nullstelle von h, d.h. h(ζ ) = 0 |{z} ∈F [X]|(h) Beweis: h(ζ ) = h(X mod h) mod h = h(X ) mod h = h mod h = 0 ր f (X ) = f 222 Nullstellen von Polynomen Satz 7.5.1: F Körper, f ∈ F [X] − {0}, d = deg(f ) ≥ 0, dann {a ∈ F | f (a) = 0} ≤ d Beweis: Induktion über d • d = 0 : f = b ∈ F − {0} → keine Nullstelle • - f hat keine Nullstelle Proposition 7.2.1 - f (a) = 0 für a ∈ F −−−−−−−→ f = (X − a) · f1 + r mit deg(r ) < deg(X − a) = 1 223 Beweis (Fortsetzung): deg(r ) < deg(X − a) = 1 →r ∈ F 0 = f (a) = (a − a) · f1 (a) + r = r −−−−−−→ f = (X − a)f1 | {z } a Nullstelle Lemma 7.1.9(c) f =(X −a)f1 +r −−−−−−→ deg(f1 ) = d − 1 Induktionsannahme −−−−−−−→ | {a ∈ F | f1 (a) = 0} | ≤ d − 1 | {z } =A1 noch z.z. A1 ∪ {a} enthält alle Nullstellen von f f (b) = (b − a)f1 (b) = 0 → (b − a) = 0 oder f1 (b) = 0 | {z } | {z } b=a b∈A1 224 Korollar 7.5.2: Gilt deg(f ) ≤ d und deg(g) ≤ d und es existieren d + 1 Elemente b ∈ F mit f (b) = g(b), dann: f = g Beweis: h: = f − g −→ deg(h) ≤ d d + 1 Elemente b ∈ F mit h(b) = 0 Satz 7.5.1 −−−−→ h = 0 −→ f = g 225 Nullstellen des Polynoms X r − 1 sr s s r −1 + (X s )r −2 + · · · + X s + 1) X | {z− 1} = (X − 1) · ((X ) Polynom aus R[X] r −1 s = 1 :X r − 1 = (X − 1)(X + X r −2{z + · · · + X + 1}) | Faktorisierung hängt von r und m ab r und |{z} m verschiedene Primzahlen p −−−−→ (X r −1 + X r −2 + · · · + X + 1) kann in Zp [X] eindeutig in | {z } Satz 7.4.4 Körper normierte irreduzible Faktoren zerlegt werden 226 Proposition 7.6.2: p und r Primzahlen, p 6= r , h normierter irreduzibler Faktor r −1 von X + · {z · · + X + 1} | X r −1 X −1 Im Körper Zp [X] | (h) gilt für ζ = (X mod h) | {z } ordF (ζ ) = r =F Beweis: X r − 1 = (X − 1) · h · q Proposition 7.4.6: ζ = (X mod h) Nullstelle von h → ebenfalls Nullstelle von X r − 1 und X r −1 + · · · + X + 1 → ζ r = 1 und ζ r −1 + · · · + ζ + 1 = 0 in Zp [X] | (h) 227 Beweis (Fortsetzung): ζ r = 1 −−−−−−−→ Ordnung von ζ in Zp [X] | (h) Teiler von r Proposition 4.2.7(b) r Primzahl −−−−→ ordF (ζ ) ∈ {1, r } Annahme: ordF (ζ ) = 1 →ζ =1 → 1r −1 + 1r −2 + · · · + 11 + 1 = 0 in F , in Zp , also r ≡ 0 (modp) ggT (r , p) = 1 Bemerkung: 1, ζ, . . . , ζ r −1 verschieden, (ζ j )r = (ζ r )j = 1 → Nullstellen von X r − 1 in F 228 Proposition 7.6.4: p und r Primzahlen, p 6= r , q = X r −1 + · · · + X + 1, dann q = h1 . . . hs , mit h1 , . . . hs ∈ Zp [X] normierte irreduzible Polynome mit Grad ordr (p) տ bzgl. Z∗r Beweis: Satz 7.4.4 sichert Existenz der (bis auf Anordnung der Faktoren) eindeutigen Faktorisierung → reicht z.z. h normierter irreduzibler Faktor von q, dann deg(h) = ordr (p) 229 Beweis (Fortsetzung): Beobachtung: Z| p [X{z] | (h)} enthält pdeg(h) Elemente ր =F k : = ordr (p) • k ≤ deg(h) =:d Propos. 7.6.2: Existenz einer zykl. Untergruppe in F ∗ der Ordnung r Proposition 4.1.9 −−−−−−→ r | (pdeg(h) − 1) տ | F∗ | −−−−−−→ pdeg(h) ≡ 1 (mod r ) Proposition 4.2.7 −−−−−−→ k | deg(h) denn: p ≡ pdeg(h)+1 (mod r ) 230 Beweis (Fortsetzung): • k ≥ deg(h) k Behauptung: f p = f für alle f ∈ |{z} F Zp [X]|(h) Satz 4.4.3: F ∗ enthält Generator/primitives Element g mit ordF ∗ (g) = pdeg(h) − 1 k Behauptung −−−−−−→ g p ≡ g (mod h) Proposition 4.2.7 −−−−−−→ pdeg(h) − 1 | pk − 1 −−−−−−→ deg(h) ≤ k 231 Behauptung: k f p = f für alle f ∈ |{z} F Zp [X]|(h) Beweis: f ∈ Zp [X] und deg(f ) < deg(h) Proposition 7.1.15: f p = f (X p ) in Zp [X] k k X r − 1 ≡ 0 mod h տ h teilt X r −1 r X −1 , also auch X − 1 pk ≡ 1 mod r , also p k = m · r + 1 für geeignetes m տ k : = ordr (p) k → X p ≡ X m·r +1 ≡ X mod h 232 Beweis (Fortsetzung): Also: f p = f (X p ) in Zp [X] und X p ≡ X mod h k −→ k k k k p f|p mod {z h} = f (X ) mod h k f p in F =Zp [X ]|(h) Propos. 7.3.3(c): g1 ≡ g2 mod h → f (g1 ) ≡ f (g2 ) mod h ↓ = f (X ) mod h = f mod h = f ↑ deg(f ) < deg(h) 233 Deterministischer Primzahltest: AKS-Algorithmus Beobachtung: (→ Folie 24 - 25, 30) Pascal’sches Dreieck: • “Primzahlzeile” N: Alles Vielfache von N (außer 1) • sonst: Binomialkoeffizienten ungleich 1, die kein Vielfaches der “Zeilennummer” Lemma 8.1.1: n ≥ 2 und a < n mit ggT (a, n) = 1, dann: n Primzahl ⇔ (X + a)n = X n + a in Zn [X] 234 Beweis: Berechnungen in Zn [X]: P n i n−i (X + a)n = X n + + an i aX 0<i<n X n ai X n−i + “⇒” X n + an |{z} i 0<i<n | {z } kleiner Satz von Fermat ≡a in Zn [X] ≡0 in Zn [X] “⇐” • n = ps · k mit ggT (p, k ) = 1 • ggT (a, p) = 1, denn ggT (a, n) = 1 n p s p · a kein Vielfaches von p → kein Vielfaches von n 235 Berechnung von (X + a |{z} )n mittels schneller ggT (a,n)=1 :–( Exponentiation in Zn [X] kann zu Zwischenergebnissen mit linear vielen Termen führen Idee: (→ Folie 31) “Beschleunigung” durch Berechnung modulo eines Polynoms X r − 1 für “hinreichend kleines”, geschickt gewähltes r 236 Vorteil: :-) Berechnungen modulo X r − 1 → X s ersetzen durch X s mod r , d.h. jedes “Zwischenpolynom” hat höchstens r Terme r ∈ O(logc n) Klar: n Primzahl: (X + a)n ≡ X n + a in Zn [X] | (X r − 1) ≡ X n mod r + a für jede Wahl von a und r Aber: n (X + a)n ≡ X + a in Zn [X] und (X + a)n ≡ X n + a in Zn [X] | (X r − 1) möglich 237 Ziel: hinreichende Bedingung für r finden, n so dass (X + a)n ≡ X + a in Zn [X] n n r und (X + a) ≡ X + a in Zn [X] | (X − 1), wenn n keine Primzahlpotenz die nicht schwierig zu überprüfen ist, und zeigen, dass es solche r ′ s in Größe O(logc n) gibt | {z } Durchprobieren möglich es müssen mehrere Wahl eines a′ s nicht ausreichend → ′ selbst für geeignet gewähltes r a s überprüft werden 238 AKS-Algorithmus: (Algo 8.2.1) Eingabe: n ∈ N, n ≥ 2 1 2 3 4 5 6 7 8 9 10 11 12 13 if (n = bc für b, c ≥ 2) then return “zusammengesetzt”; r ← 2; while (r < n) do if (r | n) then return “zusammengesetzt”; if (r ist Primzahl) then if (ni mod r 6= 1 für alle i, 1 ≤ i ≤ 4⌈log n⌉2 ) then break; r ← r + 1; if (r = n) then return “Primzahl”; √ for δ from 1 to 2⌈ r ⌉ · ⌈log n⌉ do n mod r + δ in Z [X] | (X r − 1) then if (X + δ)n ≡ X n return “zusammengesetzt”; return “Primzahl”; 239 Laufzeitanalyse AKS-Algorithmus • Abschätzung der Laufzeit für die einzelnen Operationen • while-Schleife (Zeilen 3-8) wird nur O(logc n) mal durchlaufen ! 240 Laufzeit für die arithmetischen Operationen Vorüberlegung: Größe Zwischenergebnisse beschränkt durch n2 → Länge beschränkt durch 2 log n Kapitel 2.3 arithmetische Operationen mit O(log2 n) Bit-Operationen realisierbar, Verbesserung: Õ(log n) Bit-Operationen Zeile 1: Lemma 2.3.6 O(log2 n log log n) Multiplikationen Zeilen 3-8: p(n) maximaler Wert für r noch z.z. p(n) = O(logc n) Zeile 4: p(n) Divisionen Zeile 5: r Primzahl ? Tabelle aller Primzahlen bis 2⌈log r ⌉ mittels Algo 3.5.4 241 Laufzeit AKS-Algorithmus (Fortsetzung) Zeile 5: (Fortsetzung) r erreicht Wert 2i + 1 Primzahltabelle mittels Sieb des E. (Algo 3.5 → bis 2i+1 aufbauen O(p(n) · log(p(n))) Operationen (→ Folie 74) O(p(n) · log2 n) Multiplikationen modulo r √ Zeilen 10-12: Berechnung von ⌈ r ⌉ mit O(r ) Operationen Zeile 6: Proposition 4.3.8 Berechnung (X + a)n mittels O(log n) Multiplikationen in Zn [X] | (X r − 1) 242 Laufzeit AKS-Algorithmus (Fortsetzung) - modulo (X r − 1) :X s →X s−r , r ≤ s < 2r − 1 - Multiplikation in Zn [X] | (X r − 1) mittels Multiplikation von Polynomen vom Grad höchstens r − 1 → O(r 2 ) Multiplikationen/Additionen von Elementen aus Zn (→ Definition 7.1.3, Folie 181) −→ insgesamt O(r 2 log n) Operationen in Zn √ 1≤a≤2⌈ r ⌉⌈logn⌉ 5 −−−−−−−−−−−→ O(p(n) 2 log2 n) Operationen ր dominierender Term über alle Zeilen 243 Laufzeit AKS-Algorithmus (Fortsetzung) 5 O(p(n) 2 log2 n) Operationen noch z.z. −−−→ p(n) = O(log5 n) −→ O(log14.5 n) Operationen = ˆ O(log16.5 n) Bit-Operationen mittels verbesserter “Basis”-Algorithmen −→ Õ(log9.5 n) Operationen = ˆ Õ(log10.5 n) Bit-Operationen 244 Schranke für kleinsten Zeugen r Behauptung: while-Schleife (Zeilen 3 - 8) terminiert nach höchstens 20⌈log n⌉5 Iterationen: - n klein: n < 20⌈log n⌉5 → Abbruch in Zeile 3 - n groß: • Schleife terminiert, da Teiler r von n gefunden oder • Primzahl r mit ordr (n) > 4⌈log n⌉2 gefunden → Zeuge für Zeilen 10 - 12 gefunden 245 Lemma 8.3.1: Für alle n ≥ 2 existiert Primzahl r ≤ 20⌈log n⌉5 , so dass r | n oder (r |n) und ordr (n) > 4⌈log n⌉2 Beweis: - n ∈ {2, 3} - n≥4: Q = Q 2 1≤i≤4⌈log n⌉2 (ni − 1) < n1+2+···+4⌈log n⌉ 4 +2⌈log n⌉2 = n8⌈log n⌉ 4 5 < 2(log n)10⌈log n⌉ ≤ 210⌈log n⌉ Proposition 3.6.9 Y p≤2n |{z} alle Primzahlen bis 2n p > 2n : Y 5 r > 210⌈log n⌉ > r ≤20⌈log n⌉5 | {z } Q alle Primzahlen bis . . . 246 Beweis (Fortsetzung) 8.3.1: Korollar 3.5.10 : p1 , . . . , pr verschiedene Primzahlen, die n teilen, dann teilt p1 · ... · pr n 5 es gibt Q Primzahl r ≤ 20⌈log n⌉ , die nicht teilt, also keinen Faktor (ni − 1) teilt •r |n • r |n und ordr (n) > 4⌈log n⌉2 , ≡ denn ni 1 mod r für i ≤ 4⌈log n⌉2 247 Theorem 8.3.2: Fouvry (1985), Baker/Harman (1996) Es gibt eine Konstante c0 > 0 und ein X0 , so dass für alle X ≥ X0 gilt: | {p ≤ X | p ist Primzahl und P(p − 1) ≥ X 2/3 } |≥ c0 lnXX ր größter Primfaktor von p − 1 Ziel: bessere Schranke für Größe eines kleinsten Zeugen r 248 Lemma 8.3.3: (→ Lemma 8.3.1) Ist n groß genug, existiert Primzahl r ≤ 8⌈log n⌉3 (log log n)3 so dass r | n oder (r |n) und ordr (n) > 4⌈log n⌉2 → Verbesserung Laufzeit AKS-Algorithmus (→ Folie 244) (mittels verbesserter “Basis”-Algorithmen): Õ(p(n)3/2 log2 n) arithmetische Operationen : Õ(log6,5 n) und Õ(p(n)3/2 log3 n) Bit-Operationen : Õ(log7,5 n) 249 Beweis Lemma 8.3.3: X = 8⌈log n⌉3 (log log n)3 →X 2/3 = 4⌈log n⌉2 (log log n)2 A = {r ≤ X | r Primzahl und P(r − 1) ≥ X 2/3 } Theorem 8.3.2 (∗) | A |> c · log3 n(log log n)2 für geeignet gewählte Konstante c 250 Beweis (Fortsetzung): Q Q = (ni − 1) 1≤i≤⌊x 1/3 ⌋ ր nx 2/3 /3 < Q < nx Lemma 3.6.8 : Q 2/3 Q −→ log( ) = 2(x 2/3 log n) = 2(log3 n(log log n)2 ) Q log( ) 3 log k Q > 2k · k ! > ( 2k e ) −→k = O( log log( ) ) = O( տ k = ˆ # Primfaktoren Q = O(log3 n log log n) von Q (∗) + (∗∗) −→ ∃r ∈ A mit r | n(log log n)2 ) log log n (∗∗) 251 Beweis (Fortsetzung): Behauptung: r | n oder (r |n) und ordr (n) > 4⌈log n⌉2 Beweis: • r |n • r |n : r ∈ A → r − 1 = q · m ր Primzahl mindestens x 2/3 ordr (n) | r − 1 Q r | → ni ≡1 mod r , 1 ≤ i ≤ x 1/3 → ordr (n) > x 1/3 ≥ (r − 1)/q = m → q | ordr (n) → ordr (n) ≥ q ≥ 4⌈log n⌉2 (log log n)2 > 4⌈log n⌉2 252 Zahlentheoretische Vermutung: Sophie Germain Primzahlen : q und 2q + 1 Primzahlen (→ Folie 19) Vermutung, dass ihr Anteil bis X mindestens c · X log2 X für geeignete Konstante c −→ bessere Schranke für Größe eines kleinsten Zeugen r mit r | n oder ordr (n) > 4⌈log n⌉2 : O(log2 n(log log n)2 ) = Õ(log2 n) −→ Õ(log5 n) arithmetische Operationen Õ(log6 n) Bit-Operationen 253 Theorem 8.4.1: Charakterisierung von Primzahlpotenzen n, r ∈ N mit (α) n ≥ 3 (β) r < n und r Primzahl (γ ) a|n für 2 ≤ a ≤ r (δ) ordr (n) > 4(log n)2 (ε) (X + a)n = X n + a in Zn [X] | (X r − 1) √ für 1 ≤ a ≤ 2 r log n Dann ist n Primzahlpotenz 254 Theorem 8.4.2: AKS-Algorithmus 8.2.1 liefert für n ≥ 2 Ausgabe “Primzahl” ⇔ n ist Primzahl Beweis: “⇐” n Primzahl → Zeile 1 AKS-Algo unerfüllt 4 r < n : r kein Teiler von n 3 - 8 while-Schleife mit r = n verlassen → 9 “Primzahl” in 7 verlassen → r > ordr (n) > 4⌈log n⌉2 ≥ 4 log2 n √ → n > r > 2 r log n Lemma 8.1.1 −−−−−→ (X + a)n ≡ X n mod r + a in Zn [X] | (X r − 1) → 13: “Primzahl” 255 Beweis (Fortsetzung): “⇒” AKS-Algorithmus 8.2.1 liefert Ausgabe “Primzahl” 1.Fall: Zeile 9 mit r = n erreicht → für alle r mit r < n : r |n → n Primzahl 2.Fall: Verlassen while-Schleife 3 - 8 in 7 256 Beweis (Fortsetzung): 2.Fall: Verlassen while-Schleife 3 - 8 in 7: (α) n ≥ 3, für n = 2 kein Durchlauf der while-Schleife (β) r < n und r Primzahl (Zeile 5) (γ ) a|n für alle a ∈ {2, . . . , r } (Zeile 4 für Theorem 8.4.1 ←−−−−−−− alle bisherigen Durchläufe der while n = pi Schleife) ր 2 Primzahl (δ) ordr (n) > 4 log n (Zeile 6) Zeile 1 → i = 1 n n r (ε) (X + a) = (X√ + a) in Zn [X] | (X − 1) für 1 ≤ a ≤ 2 r log n (Zeilen 11 - 12) 257 Charakterisierung von Primzahlpotenzen z.z. n, r ∈ N mit (α) (β) (γ ) (δ) (ε) n≥3 r < n und r Primzahl a|n für 2 ≤ a ≤ r ordr (n) > 4 log2 n (X + a)n = X n + a in Zn [X] | (X r − 1) √ √ für 1 ≤ a ≤ 2 r log n l: = ⌊2 r log n⌋ p | n −→ n = pi 258 Lemma 8.5.1: (a) p > r und r |n (b) r > l (c) 1 ≤ a′ − a < p für 1 ≤ a < a′ ≤ l Beweis: (γ ): (δ): a|n, 2 ≤ a ≤ r ordr (n) > 4 log2 n (a) + (b) → (c) → (a) √ → r >√ 2 log n → r > 2 r log n ≥ l 259 Lemma 8.5.2: (X + a)n ≡ X n + a mod (X r − 1) in Zp [X], 1 ≤ a ≤ l Beweis: (ε): (X + a)n ≡ X n + a mod (X r − 1) in Zn [X], 1 ≤ a ≤ l → ∃f , g ∈ Z[X] mit ց n n r (X + a) − (X + a) = (X − 1) · f + n · g → (X + a)n ≡ (X n + a) mod (X r − 1) in Zp [X] ր p | n, also n · g = p · ĝ mit ĝ = (n/p) · g 260 Lemma 8.5.3: (X + a)p ≡ X p + a (mod X r − 1) in Zp [X] für alle a ∈ Zp Beweis: Proposition 7.1.15 (b): f pk = f (X pk ) in Zp [X] → (X + a})p = X p + a in Zp [X] | {z f → (X + a)p ≡ X p + a (mod X r − 1) in Zp [X] 261 Lemma 8.5.4: u ≥ 1, f ∈ Zp [X]: f u ≡ f (X u ) (mod X r − 1) in Zp [X] | {z } :=I(u,f ) Aus I(u, f ) und I(v , f ) folgt I(uv , f ) Lemma 8.5.5: Aus I(u, f ) und I(u, g) folgt I(u, fg) Lemma 8.5.6: P={ Q 1≤a≤l (X + a)βa | βa ≥ 0 für 1 ≤ a ≤ l} ⊆ Zp [X], U = {ni p j | i, j ≥ 0} f uտ ≡ f (X u ) (mod X r − 1) ր ∈U ∈P 262 Beweis Lemma 8.5.4: f v ≡ f (X v ) (mod X r − 1) ր f ∈ I(v , f ) f u·v = (f v )u ≡ (f (X v ))u (mod X r − 1) (∗) ր Lemma 7.2.5(c) f (g1 ) ≡ f (g2 ) mod h für g1 ≡ g2 mod h Proposition 7.1.13(c) (f · g)(s) = f (s) · g(s) ւ (f (X v ))u = f (X v ) . . . f (X v ) = (f · · · · · f )(X v ) = (f u )(X v ) (∗∗) | {z } | {z } u mal u mal 263 Beweis (Fortsetzung): Def I(u, f ) f u − f (X u ) = (X r − 1) · X →X v g |{z} ∈Zp [X] −−−−→ f u (X v ) − f ((X v )u ) = ((X v )r − 1)g(X v ) | {z } ĝ = (X v r − 1) · ĝ (X r − 1) | (X rs − 1), s≥1 ց = (X r − 1) · |{z} ĥ · ĝ ∈Zp [X] −−−−→ f u (X v ) ≡ f (X uv ) (mod X r − 1) | {z } =(∗)+(∗∗) f uv 264 Beweis Lemma 8.5.5: (fg)u = f u · g u ≡ f (X u ) · g(X u ) ր Def I(u, f ), I(u, g) + Proposition 7.2.5(b) f1 · g1 ≡ f2 · g2 mod h für g1 ≡ g2 mod h, f1 ≡ f2 mod h = (f · g)(X u ) (mod X r − 1) 265 Proposition 7.6.4: h normierter irreduzibler Faktor von X r −1 + · · · + X + 1, dann deg(|{z} h ) = ordr (p) = :d ∈ Zp [X] F = Zp [X] | (h) տ Polynome über Zp [X] vom Grad höchstens d − 1: | F |= pd Beobachtung: Möglich ordr (n) nicht zu klein, jedoch ordr (p) = 1 Beispiel: r = 101, p = 607, n = 16389 (= 27 · 607) ord101 (607) = 1 ord101 (16389) = 100 266 Lemma 8.5.7: Die linearen Polynome X + a, 1 ≤ a ≤ l, sind verschieden in Zp [X] und in F , es gilt X + a mod h 6= 0 Beweis: Lemma 8.5.1(c): 1 ≤ a′ − a < p 1 ≤ a < a′ ≤ l (X + a′ ) − (X + a) = a′ − a 6= 0 in Zp [X] und Zp −→ alle (X + a), 1 ≤ a ≤ l, verschieden in Zp [X] und F 267 Beweis (Fortsetzung): Annahme: h | (X + a) → h = X + a → F = Zp ր ζ = −a, ordF (ζ ) = r h normiert, nichtkonstant Lemma 8.5.2: (X + a)n ≡ Xn + a (mod(X r − 1)) in Zp [X] −→ (X − ζ )n = X n − ζ + q · (X r − 1) ր X →ζ −→ ζr − 1 = 0 0= ζn −ζ ∈ Zp [X] → ζ n−1 = 1 (in Zp ) → r | (n − 1) → ordr (n) = 1 Satz 8.4.1 (δ) ordr (n) > 4 log2 n 268 Lemma 8.5.8: F = Zp [X] | (h) Q G= (X + a)βa mod h | βa ≥ 0 für 1 ≤ a ≤ l 1≤a≤l G ist Untergruppe von F ∗ Beweis: • 0 ∈G (→ Lemma 8.5.7) •1= Q 1≤a≤l (X + a)0 ∈ G • f , g ∈ G →f · g ∈ G Lemma 4.1.6 (F ∗ endlich) 269 Lemma 8.5.9: Q (X + a)βa mod h | βa ≥ 0 für 1 ≤ a ≤ l G= 1≤a≤l ζ = (X mod h) g ∈ G mit g = f mod h տ ∈ Q 1≤a≤l (X + a)βa | βa ≥ 0 für 1 ≤ a ≤ l U = {ni pj | i, j ≥ 0} Es gilt g u = f (ζ u ) für alle u ∈ U in F . 270 Beweis 8.5.9: (∗) g u ≡ f u (modh) in Zp [X] ր ≡ f (X u )(modh) denn : Lemma 8.5.6 + Lemma 7.2.6 (h | (X r − 1)) (∗∗) X u ≡ (ζ u mod h)(modh) ր Proposition 7.2.5(b) + Def ζ (∗)+(∗∗) −→ g u mod h | {z } =g u in F =ζ u in F z }| { = f u mod h = f (X u ) mod h = f (ζ u mod h) mod h 271 Lemma 8.5.10: T = {ζ u | u ∈ U}, t:= |T | ր in F ր = {ni pj | i, j ≥ 0} Es gilt r > t > 4 log2 n Beweis: • z.z. r > t T ⊆ hζ i = {1, ζ , . . . , ζ r −1 } ր von ζ erzeugte Untergruppe in F Beobachtung: ζ u =1, u ∈ U, denn r |ni pj −→ t ≤ r − 1 272 Beweis 8.5.10 (Fortsetzung): • z.z. t > 4 log2 n i |{ζ n | i ≥ 0}| = |{ni mod r | i ≥ 0}| = ordr (n) տ ∈U ր hζ i zyklische Gruppe der Größe r i j → ζn =ζ n ⇔ ni mod r =nj mod r ր Satz 8.4.1 (δ) > 4 log2 n −→ t > 4 log2 n 273 Zu 8.5.11: modh G injektiv P Ziel: untere Schranke für |G| (8.5.12) 274 Lemma 8.5.11: ( ) Q f1 , f2 ∈ P = (X + a)βa | βa ≥ 0 für 1 ≤ a ≤ l 1≤a≤l տ ⊆ Zp [X] deg(f1 ), deg(f2 ) < t −→ f1 mod h = (f2 mod h) Beweis: Annahme: g1 = g2 mit g1 = (f1 mod h) und g2 = (f2 mod h) → f1 (ζ u ) = g1u = g2u = f2 (ζ u ), u ∈ U տ ր in F Lemma 8.5.9 → f1 = f2 , denn deg(f1 ), deg(f2 ) < t und | T |= t Korollar 7.5.2 275 Lemma 8.5.12: √ | G | > 21 n2 t տQ (X + a)βa mod h | βa ≥ 0 für 1 ≤ a ≤ l 1≤a≤l Bemerkung: | G |> 12 n2 √ t Lemma 8.5.10 > 1 4 log n 2n → | F |>| G |> p4 log n ր Lemma 8.5.8 G Untergruppe von F ∗ → deg(h) > 4 log n → F = Zp und ζ = X (denn deg(h) > 1) 276 Beweis 8.5.12: µ: = min{l, t − 1} Q (X + a)βa mit βa ∈ {0, 1} für 1 ≤ a ≤ µ in Zp [X] 1≤a≤µ − alle diese Polynome vom Grad < t verschieden, denn Produkt von normierten, irreduzibelen Polynomen (Theorem 7.4.4: Eindeutige Faktorisierung von Polynomen) Lemma 8.5.11 −−−→ modulo h → verschiedene Polynome in G → | G |≥ 2µ 277 Beweis 8.5.12 (Fortsetzung): µ: = min{l, t − 1} | G |≥ 2µ Lemma 8.5.10: • µ=l r >t √ √ √ µ = ⌊2 r log n⌋ > 2 r log n − 1 > 2 t log n − 1 • µ = t − 1 Lemma 8.5.10: t > 4 log2 n √ µ = t − 1 > 2 t log n − 1 → | G |≥ 2µ > 22 √ t log n−1 = 21 n2 √ t 278 Zu 8.5.14: injektiv u −−−−→ ζ u տ ր ∈ U0 ∈T Ziel: obere Schranke für U0 279 Lemma 8.5.14: | {ni p j | 0 ≤ i, j ≤ | {z :=U0 ⊆U Beweis: √ t} |≤ t } Behauptung 1: u <| G | für alle u ∈ U0 Behauptung 2: u, v ∈ U0 mit u = v u v →ζ = ζ in F wird im Beweis von Behauptung 2 benutzt denn: U0 ⊆ U und | {ζ u | u ∈ U} |= t 280 Beweis Behauptung 1: 1 Voraussetzung: p | n und p = n → p ≤ 2 n ni p j √ i,j≤ t ≤ √ ( 21 n2 ) t Lemma 8.5.12 <|G| Beweis Behauptung 2: Annahme: u v u, v ∈ U0 mit u = v und ζ = ζ Q (X + a)βa mod h | βa ≥ 0 für 1 ≤ a ≤ l} g∈G={ 1≤a≤l տ beliebig → g = (f mod h) ր geeignet gewählt Q ∈P={ (X + a)βa | βa ≥ 0 für 1 ≤ a ≤ l} 1≤a≤l 281 Beweis Behauptung 2 (Fortsetzung): g = (f mod h) Lemma 8.5.9 8.5.9 Annahme 8.5.9 −−−−−−−−→ g u = f (ζ u ) = f (ζ v ) = g v in F | {z } g Nullstelle des Polynoms u X − X v} | {z ∈Zp [X] g beliebig gewählt aus G → alle El. aus G Nullstellen deg(X u − X v ) ≤ max{u, v } Theorem 7.5.1 Behauptung 1 < |G| −−−−−−−−−→ X u − X v Nullpolynom → u = v 282 Lemma 8.5.15: n ist Potenz von p (wenn Voraussetzungen aus Theorem 8.4.1 gelten und p | n) Beweis: √ √ √2 • #(i, j), 0 ≤ i, j ≤ ⌊ t⌋, ist (⌊ t⌋ + 1)2 > t = t √ • Lemma 8.5.14: | {ni pj | 0 ≤ i, j ≤ ⌊ t⌋} | ≤ t | {z } U0 pigeon hole principle i j k m −→ ∃(i, j), (k , m):(i, j) = (k , m) und n p = n p - j =m→i =k ր - j < m (o.B.d.A.) → i > k und ni−k = pm−j Theorem 3.5.8 −−−−−−−−−→ n Potenz von p 283