Der Primzahltest von Agrawal, Kayal und Saxena Dr. Gerold Jäger Habilitationsvortrag Christian-Albrechts-Universität zu Kiel Institut für Informatik 19. Januar 2011 Dr. Gerold Jäger Habilitationsvortrag 1/ 37 Überblick 1 Zahlentheorie Bedeutung Wichtige Probleme der Zahlentheorie Weitere Primzahltests 2 Definitionen und Resultate aus der Zahlentheorie 3 Primzahltest von Agrawal, Kayal und Saxena 4 Fazit und Ausblick Dr. Gerold Jäger Habilitationsvortrag 2/ 37 Bedeutung Carl Friedrich Gauß (1777–1855): Zahlentheorie ist die Königin der Mathematik.“ ” Wichtige Anwendungen in der Informatik, z.B. in der Kryptographie. Genauer sind folgende zwei Probleme von großer Relevanz: Weise für eine große Primzahl nach, dass sie eine Primzahl ist. Primzahltest. Berechne für eine große Nicht-Primzahl einen Teiler dieser Zahl. Faktorisierungsalgorithmus. Dr. Gerold Jäger Zahlentheorie Habilitationsvortrag 3/ 37 Wichtige Probleme der Zahlentheorie Problem 1: Gibt es unendlich viele Primzahlen? Antwort: Ja. Euklid von Alexandria (ca. 360 v. Chr. – ca. 280 v. Chr.). Problem 2: Gibt es unendlich viele Primzahlzwillinge, d.h. Primzahlen mit Differenz 2, z.B. 5, 7 und 29, 31 ? Antwort: Unbekannt. Vermutung: Ja. Teilresultat auf dem Weg zu dieser Vermutung: Goldston, Yildirim, Pintz, 2005. Dr. Gerold Jäger Zahlentheorie Habilitationsvortrag 4/ 37 Wichtige Probleme der Zahlentheorie Problem 3: Gibt es eine natürliche Zahl n > 2 und natürliche Zahlen x, y , z, so dass gilt: x n + y n = z n ? Antwort: Nein. Aber: Für n = 2: Ja. Beispiel: 32 + 42 = 52 . Pythagoreische Tripel. Großer Fermatscher Satz Pierre Fermat (1607/1608–1655). Fermat: Ich habe hierfür einen wahrhaft wunderbaren Beweis ” gefunden, doch ist der Rand hier zu schmal, um ihn zu fassen.“ Generationen von Mathematikern suchten nach dem Beweis. Dr. Gerold Jäger Zahlentheorie Habilitationsvortrag 5/ 37 Wichtige Probleme der Zahlentheorie Geldpreis: Testament von Paul Friedrich Wolfskehl (1856–1906). Beweis: Andrew Wiles, Richard Taylor (1995). Dieser Beweis gilt als eine der bedeutendsten Arbeiten des 20. Jahrhunderts. Jahrhundertbeweis. Dr. Gerold Jäger Zahlentheorie Habilitationsvortrag 6/ 37 Wichtige Probleme der Zahlentheorie Problem 4: Suche eine möglichst große Primzahl! Primzahltest. Aktuell: 243.112.609 − 1, eine Zahl mit 12.978.189 Stellen. Man bräuchte einen 1 Meter hohen Papierstapel, um diese Zahl aufzuschreiben. Edson Smith, University of California, Los Angeles (2008). Dr. Gerold Jäger Zahlentheorie Habilitationsvortrag 7/ 37 Wichtige Probleme der Zahlentheorie Problem 5: Gibt es einen Primzahltest, dessen Laufzeit polynomial beschränkt ist in der Eingabelänge log(n) der zu testenden Zahl? (Hintergrund: Algorithmen, deren Laufzeit durch ein Polynom in der Eingabegröße beschränkt ist, gelten in der theoretischen Informatik als effiziente Algorithmen.) Antwort: Ja. Theorem 1 (Agrawal, Kayal, Saxena, 2002) Für jede natürliche Zahl n lässt sich in Zeit O(log10,5 (n)) entscheiden, ob n eine Primzahl ist. Dr. Gerold Jäger Zahlentheorie Habilitationsvortrag 8/ 37 Wichtige Probleme der Zahlentheorie Lösung eines über 30 Jahre offenen Problems der Zahlentheorie und Komplexitätstheorie. Überraschendes Resultat. Weltweit großes Interesse. Gödel-Preis im Gebiet Theoretische Informatik (2006). Fulkerson-Preis im Gebiet Diskrete Mathematik (2006). Dr. Gerold Jäger Zahlentheorie Habilitationsvortrag 9/ 37 Weitere Primzahltests Primzahlsieb des Eratosthenes (ca. 200 v. Chr.). Primzahlsieb von Atkin (1999). Verbesserung des Siebs von Eratosthenes. Primzahltest von Fermat. Folgende Primzahltests sind Erweiterungen des Primzahltests von Fermat: Primzahltest von Miller, Rabin (1976). Primzahltest von Solovay-Strassen (1977). Beides probabilistische Algorithmen, d.h. sie haben eine kleine Irrtumswahrscheinlichkeit. Primzahltest von Lucas-Lehmer (1930). Wurde benutzt zur Berechnung der Rekord-Primzahl. Primzahltest von Lucas (1953). Primzahltest von Adleman, Pomerance, Rumely (1983). Dr. Gerold Jäger Zahlentheorie Habilitationsvortrag 10/ 37 Definitionen und Resultate aus der Zahlentheorie N := {1, 2, 3, . . .}. N0 := {0, 1, 2, 3, . . .}. Primzahlen: Zahlen aus N \ {1}, die nur Teiler 1 und sich selbst haben. Zusammengesetzte Zahlen: Zahlen aus N \ {1}, die keine Primzahlen sind. R: Menge der reellen Zahlen. R+ : Menge der positiven reellen Zahlen. bxc: untere Gaußklammer: größte natürliche Zahl kleiner gleich x ∈ R. dxe: obere Gaußklammer: kleinste natürliche Zahl größer gleich x ∈ R. Wir verwenden immer den Logarithmus zur Basis 2: log(x) := log2 (x) Dr. Gerold Jäger für x ∈ R+ . Definitionen und Resultate aus der Zahlentheorie Habilitationsvortrag 11/ 37 Definitionen und Resultate aus der Zahlentheorie Landau-Symbol: Seien f , g : R → R. f (x) = O(g (x)) :⇔ ∃C1 , C2 ∈ R : ∀x ≥ C1 : |f (x)| ≤ C2 · |g (x)|. Fakultät: n! := 1 · 2 · 3 · . . . · n Binomialkoeffizient: m m! := n (m − n)! · n! für n ∈ N0 . für m, n ∈ N0 mit n ≤ m. Teilbarkeit: Seien a, b ∈ N. a | b :⇔ ∃k ∈ N : a · k = b. Dr. Gerold Jäger Definitionen und Resultate aus der Zahlentheorie Habilitationsvortrag 12/ 37 Definitionen und Resultate aus der Zahlentheorie Seien a, b ∈ N. a und b teilerfremd :⇔ a und b haben keinen gemeinsamen Teiler außer 1. ggT (k, m): Größter gemeinsamer Teiler von k, m ∈ N. Modulare Kongruenz natürlicher Zahlen k, m ∈ N modulo n ∈ N: k ≡n m :⇔ k und m lassen bei Division durch n den gleichen Rest. Andere Schreibweise: k ≡ m Beispiel: mod n. 44 ≡6 26 wegen 44 = 7 · 6 + 2, 26 = 4 · 6 + 2. Dr. Gerold Jäger Definitionen und Resultate aus der Zahlentheorie Habilitationsvortrag 13/ 37 Definitionen und Resultate aus der Zahlentheorie Definiere für n ∈ N: Zn := {0, 1, 2, . . . , n − 1}. + auf Zn ist folgendermaßen definiert: Die Operation + b := (a + b) mod n. a Beispiel für n = 14: + 7 = 10 + 7 mod 14 ⇒ 10 da Dr. Gerold Jäger = 17 mod 14 = 3 mod 14, 17 = 1 · 14 + 3. Definitionen und Resultate aus der Zahlentheorie Habilitationsvortrag 14/ 37 Definitionen und Resultate aus der Zahlentheorie Definiere für n ∈ N: Z× := {a ∈ {1, 2, . . . , n − 1} | a, n sind teilerfremd }. n · auf Z× Die Operation n ist folgendermaßen definiert: · b := (a · b) mod n. a Beispiel für n = 14: · 11 = 5 · 11 mod 14 5 da Dr. Gerold Jäger = 55 mod 14 = 13 mod 14, 55 = 3 · 14 + 13. Definitionen und Resultate aus der Zahlentheorie Habilitationsvortrag 15/ 37 Definitionen und Resultate aus der Zahlentheorie Fakt: Für jedes r ∈ N und n ∈ Z× r gibt es ein d ∈ N mit nd ≡r 1. Definiere ordr (n) als das kleinste d ∈ N mit dieser Eigenschaft. Beispiel: ord9 (4) = 3, da 43 = 4 · 4 · 4 = 64 = 7 · 9 + 1, aber 42 = 4 · 4 = 16 = 1 · 9 + 7, 41 = 4 = 0 · 9 + 4. Dr. Gerold Jäger Definitionen und Resultate aus der Zahlentheorie Habilitationsvortrag 16/ 37 Definitionen und Resultate aus der Zahlentheorie Menge aller Polynome in der Variablen x mit Koeffizienten aus Zn = {0, 1, 2, . . . , n − 1}, wobei n ∈ N: ( t ) X Zn [x] := ai · x i t ∈ N, ai ∈ Zn . i=0 Modulare Kongruenz zwischen Polynomen p(x), q(x) ∈ Zn [x]: p(x) ≡n q(x) :⇔ p(x) und q(x) sind koeffizientenweise gleich modulo n. Beispiel für n = 6: 8x 4 + 12x 3 − 5x + 17 ≡6 2x 4 + x + 5. Dr. Gerold Jäger Definitionen und Resultate aus der Zahlentheorie Habilitationsvortrag 17/ 37 Definitionen und Resultate aus der Zahlentheorie Modulare Kongruenz zwischen Polynomen p(x), q(x) ∈ Zn [x] modulo n ∈ N und z(x) ∈ Z(x). p(x) ≡n,z(x) q(x) :⇔ Dividiert man die Polynome p(x) und q(x) durch z(x) und nennt sie p 0 (x) und q 0 (x), so gilt: p 0 (x) und q 0 (x) sind koeffizientenweise gleich modulo n. Dr. Gerold Jäger Definitionen und Resultate aus der Zahlentheorie Habilitationsvortrag 18/ 37 Definitionen und Resultate aus der Zahlentheorie Beispiel: n = 5, p(x) = 2x 3 − 5x 2 − x + 13, q(x) = 7x 5 − 6x 3 + 10x + 3, z(x) = x 2 − 1. Es gilt: 2x 3 − 5x 2 − x + 13 ≡5, x 2 −1 7x 5 − 6x 3 + 10x + 3, da 2x 3 − 5x 2 − x + 13 = (2x − 5) · (x 2 − 1) + (x + 8), 7x 5 − 6x 3 + 10x + 3 = (7x 3 + x) · (x 2 − 1) + (11x + 3). ⇒ x + 8 ≡5 11x + 3. Dr. Gerold Jäger Definitionen und Resultate aus der Zahlentheorie Habilitationsvortrag 19/ 37 Definitionen und Resultate aus der Zahlentheorie Satz 2 (Binomischer Lehrsatz) Seien x, y ∈ R und n ∈ N0 . Dann gilt: (x + y ) n = n X n i=0 i · x i · y n−i . Lemma 3 p Sei p eine Primzahl. Für alle i ∈ N mit 0 < i < p gilt: p . i Satz 4 (Kleiner Fermatscher Satz) Sei a ∈ N0 und p eine Primzahl. Dann gilt: ap ≡p a. Probabilistischer Primzahltest. Dr. Gerold Jäger Definitionen und Resultate aus der Zahlentheorie Habilitationsvortrag 20/ 37 Primzahltest von Agrawal, Kayal und Saxena Theorem 5 (Einfaches AKS-Kriterium) Seien a, n ∈ N, wobei a und n teilerfremd sind. Dann gilt: n ist Primzahl ⇔ (x + a)n ≡n x n + a. Beweis ⇒“: Sei n Primzahl. Sei i ∈ N mit 0 < i < n. Nach Lemma 3 gilt: ” n n . i n X n i n−i n ⇒ (x + a) = x ·a (nach dem binomischen Lehrsatz) i i=0 ≡n x n + an ≡n x n + a Dr. Gerold Jäger (nach dem kleinen Fermatschen Satz). Primzahltest von Agrawal, Kayal und Saxena Habilitationsvortrag 21/ 37 Primzahltest von Agrawal, Kayal und Saxena Beweis (Fortsetzung) ⇐“: Es gelte (x + a)n ≡n x n + a. ” Annahme: n ist keine Primzahl. Es existiert eine Primzahl p < n mit p|n. Sei c := max{c ∈ N p c | n} ≥ 1. D.h. p c |n, aber p c+1 6 | n. Es gilt: n n! n · (n − 1) · . . . · (n − p + 1) = = . p p! · (n − p)! p · (p − 1) · . . . · 2 · 1 Dr. Gerold Jäger Primzahltest von Agrawal, Kayal und Saxena Habilitationsvortrag 22/ 37 Primzahltest von Agrawal, Kayal und Saxena Beweis (Fortsetzung) Beobachtung 1: p geht in den Zähler genau c-mal ein. Beobachtung 2: p geht in den Nenner genau 1-mal ein. n ⇒ p geht in genau (c − 1)-mal ein. p n c ⇒ p 6 . p n ⇒ n 6 . p n ⇒ 6≡n 0. p n X n n ⇒ (x + a) ≡n · x i · an−i 6≡n x n + a. i i=0 zur Voraussetzung. Dr. Gerold Jäger ⇒ n ist Primzahl. Primzahltest von Agrawal, Kayal und Saxena Habilitationsvortrag 23/ 37 Primzahltest von Agrawal, Kayal und Saxena Könnte man (x + a)n ≡n x n + a in Polynomialzeit testen, wäre man fertig. Problem: Komplexität dieses Primzahltests O(n · log2 (n)) = O 2log(n) · log2 (n) somit nicht polynomial in Länge von n, d.h. in log(n). Idee: Teste zusätzlich Gleichheit mod z(x) mit einem geeigneten Polynom z(x). Dr. Gerold Jäger Primzahltest von Agrawal, Kayal und Saxena Habilitationsvortrag 24/ 37 Primzahltest von Agrawal, Kayal und Saxena Theorem 6 (Erweitertes AKS-Kriterium) Seien a, n, r ∈ N, wobei a und n teilerfremd sind. Dann gilt: n ist Primzahl ⇒ (x + a)n ≡n,x r −1 x n + a. Könnte man (x + a)n ≡n,x r −1 x n + a in Polynomialzeit testen und würde auch die Rückrichtung gelten, wäre man fertig. Die Polynomialzeit-Eigenschaft ist bei geeigneter Wahl von r erfüllt. Wie wir später sehen werden. Problem: Die Rückrichtung gilt nicht, d.h. es gibt auch zusammengesetzte Zahlen, die dieses Kriterium erfüllen. Dr. Gerold Jäger Primzahltest von Agrawal, Kayal und Saxena Habilitationsvortrag 25/ 37 Primzahltest von Agrawal, Kayal und Saxena Idee: Sei r fest. Betrachte eine zusammengesetzte Zahl n, die trotzdem das erweiterte AKS-Kriterium für ein a ∈ N (a, n teilerfremd) erfüllt. Suche ein anderes b ∈ N (b, n teilerfremd), das die erweiterte AKS-Bedingung nicht erfüllt. Definiere A(n, r ) := {a ∈ N | a, n teilerfremd, (x + a)n ≡n,x r −1 x n + a}, B(n, r ) := {b ∈ N | b, n teilerfremd, (x + b)n 6≡n,x r −1 x n + b}. 0 a1 a2 b1 b2 b3 a3 a4 a5 b4 Ziel: Finde eine Menge C (n, r ) ⊆ N mit B(n, r ) ∩ C (n, r ) 6= ∅. Aber: Es muss |C (n, r )| = O(poly log(n)) gelten. AKS-Resultat: Eine solche gesuchte Menge ist: n j q ko C (n, r ) = 1, 2, . . . , 2 · |Z× | · log(n) . r Dr. Gerold Jäger Primzahltest von Agrawal, Kayal und Saxena Habilitationsvortrag 26/ 37 Primzahltest von Agrawal, Kayal und Saxena Input: n ∈ N. Output: Prim oder Zusammengesetzt. 1. Teste: Ist n = ab für ein a ∈ N und ein b ∈ N mit b > 1 ? If Yes then Output Zusammengesetzt. Potenz-Schritt. 2. Berechne das kleinste r ∈ N mit ordr (n) > 4 log2 (n). Ordnung-Schritt. 3. For a = 1, 2, . . . , r Do If 1 < ggT(a, n) < n then Output Zusammengesetzt. ggT-Schritt. 4. If n ≤ r then Output Prim. Vergleich-Schritt. q 5. For a = 1, 2, . . . , 2 · |Z× r | · log(n) Do If (x + a)n 6≡n, x r −1 x n + a then Output Zusammengesetzt. AKS-Schritt. 6. Output Prim. Finaler Schritt. Dr. Gerold Jäger Primzahltest von Agrawal, Kayal und Saxena Habilitationsvortrag 27/ 37 Primzahltest von Agrawal, Kayal und Saxena Beispiel 1: n = 36. Potenz-Schritt 1: n = 36 = 62 . Output: Zusammengesetzt. Beispiel 2: n = 21. Potenz-Schritt 1: n ist keine echte Potenz einer natürlichen Zahl. Ordnung-Schritt 2: r = 97. ggT-Schritt 3: 1 < ggT(3, 21) = 3 < 21. Output: Zusammengesetzt. Beispiel 3: n = 307. Potenz-Schritt 1: n ist keine echte Potenz einer natürlichen Zahl. Ordnung-Schritt 2: r = 281. ggT-Schritt 3: ggT(a, 307) = 1 für alle a = 1, 2, . . . , 281. Vergleich-Schritt 4: n = 307 > 281 = r . q AKS-Schritt 5: Für alle a = 1, 2, . . . , 2 · |Z× r | · log(n) = 191 gilt: (x + a)307 ≡307, x 281 −1 x 307 + a. Finaler Schritt 6: Output: Prim. Dr. Gerold Jäger Primzahltest von Agrawal, Kayal und Saxena Habilitationsvortrag 28/ 37 Primzahltest von Agrawal, Kayal und Saxena Theorem 7 Für den AKS-Algorithmus gilt: n ist Primzahl ⇒ Output: Prim. Beweis Annahme: n ist Primzahl, aber Output: Zusammengesetzt. Fall 1: Output: Zusammengesetzt in Potenz-Schritt 1. Dann wäre n eine echte Potenz einer natürlichen Zahl und damit selber keine Primzahl. zu n Primzahl. Fall 2: Output: Zusammengesetzt in ggT-Schritt 3. Dann gäbe es einen Teiler b von n zwischen 1 und n. zu n Primzahl. Dr. Gerold Jäger Primzahltest von Agrawal, Kayal und Saxena Habilitationsvortrag 29/ 37 Primzahltest von Agrawal, Kayal und Saxena Beweis (Fortsetzung) Fall 3: Output: Zusammengesetzt in AKS-Schritt 5. Dann gibt es ein a ∈ N mit (x + a)n 6≡n, x r −1 x n + a. (1) Fall 3a: a und n sind teilerfremd. Nach dem Erweiterten AKS-Kriterium gilt in (1) die Gleichheit. Fall 3b: a und n sind nicht teilerfremd. Da n Primzahl ist, gilt: n | a. ⇒ In (1) gilt die Gleichheit. ⇒ Output: Prim. Dr. Gerold Jäger Primzahltest von Agrawal, Kayal und Saxena Habilitationsvortrag 30/ 37 Primzahltest von Agrawal, Kayal und Saxena Theorem 8 Für den AKS-Algorithmus gilt: n ist zusammengesetzt ⇒ Output: Zusammengesetzt. Beweis Annahme: n ist zusammengesetzt, aber Output: Prim. Somit gibt es eine Primzahl p, die Teiler von n ist. Fall 1: Output: Prim in Vergleich-Schritt 4. Dann wäre p bereits in ggT-Schritt 3 gefunden worden. Fall 2: Output: Prim im finalen Schritt 6. Die Idee für diesen Fall wurde schon präsentiert. Die Ausführung erfordert tieferliegende Methoden und wird hier nicht gezeigt. Dr. Gerold Jäger Primzahltest von Agrawal, Kayal und Saxena Habilitationsvortrag 31/ 37 Primzahltest von Agrawal, Kayal und Saxena Lemma 9 Falls es kein r ∈ N mit r ≤ 16dlog5 (n)e und ggT(r , n) > 1 gibt, so wird in Ordnung-Schritt 2 ein r ∈ N mit r ≤ 16 dlog5 (n)e gefunden. Theorem 1 (Agrawal, Kayal, Saxena, 2002) Für jede natürliche Zahl n lässt sich in Zeit O(log10,5 (n)) entscheiden, ob n eine Primzahl ist. Beweis (Komplexität) Potenz-Schritt 1: Teste, ob für b = 2, 3 . . . , dlog(n)e ein a ∈ N mit √ a ≤ n existiert, so dass ab = n. √ O(log( n) · log(n) · log3 (n)) = O(log5 n). Dr. Gerold Jäger Primzahltest von Agrawal, Kayal und Saxena Habilitationsvortrag 32/ 37 Primzahltest von Agrawal, Kayal und Saxena Beweis (Fortsetzung) Ordnung-Schritt 2: Teste für jedes r ∈ N mit r ≤ 16dlog5 (n)e und alle d ∈ N mit d ≤ 4 log2 (n), ob nd ≡r 1. Multiplikation in Zr : O(log2 (r )). Gesamt-Komplexität: O(r · d · log2 (r )). ⇒ O(log5 (n) · log2 (n) · log2 (log5 (n))). ⇒ Dr. Gerold Jäger O(log7 (n) · poly(log log(n)). Primzahltest von Agrawal, Kayal und Saxena Habilitationsvortrag 33/ 37 Primzahltest von Agrawal, Kayal und Saxena Beweis (Fortsetzung) ggT-Schritt 3: Berechne für jedes a ∈ N mit a ≤ r den Wert ggT(a, r ). ggT-Berechnung: O(log2 (r )). Gesamt-Komplexität: O(r · log2 (r )). ⇒ O(log5 (n) · log2 (log5 (n))). ⇒ O(log5 (n) · poly(log log(n)). Vergleich-Schritt 4: Test n ≤ r . Komplexität: O(log(n)). Dr. Gerold Jäger Primzahltest von Agrawal, Kayal und Saxena Habilitationsvortrag 34/ 37 Primzahltest von Agrawal, Kayal und Saxena Beweis (Fortsetzung) q × AKS-Schritt 5: Berechne für jedes a ∈ N mit a ≤ 2 |Zr | log(n) , ob (x + a)n 6≡n, x r −1 x n + a gilt. Polynom-Multiplikation von Polynomen mit Grad höchstens r und Koeffizienten aus Zn : O(r · log2 (n)). Gesamt-Komplexität: q × 2 O |Zr | · log(n) · r · log (n) . ⇒ O(r 1,5 · log3 (n)). ⇒ O(log10,5 (n)). Gesamt-Komplexität aller Schritte: O(log10,5 (n)). Dr. Gerold Jäger Primzahltest von Agrawal, Kayal und Saxena Habilitationsvortrag 35/ 37 Fazit und Ausblick Primzahltest von Agrawal, Kayal, Saxena : Erster Primzahltest mit polynomialer Laufzeit. Verbesserung von Lenstra, Pomerance (2003): O(log10,5 (n)) O(log6 (n)). Trotzdem: Primzahltest von Lucas, Lehmer Primzahltest von Miller, Rabin Rekord-Primzahl. wird in der Praxis benutzt. Diskrepanz zwischen Theorie und Praxis. Erst für (praktisch zu) große n ist der Primzahltest von Agrawal, Kayal, Saxena führend. Problem: Kann man den Primzahltest von Agrawal, Kayal, Saxena so verbessern, dass er auch in der Praxis am besten ist? Dr. Gerold Jäger Fazit und Ausblick Habilitationsvortrag 36/ 37 Vielen Dank für Ihre Aufmerksamkeit! Dr. Gerold Jäger Fazit und Ausblick Habilitationsvortrag 37/ 37