PRIMHEITSZERTIFIKATE UND TEST VON PROTH Seminar Primzahltests von zur Gathen & Müller & Krummel

Ähnliche Dokumente
Primzahlzertifikat von Pratt

Pratts Primzahlzertifikate

Musterlösung zur Probeklausur zur Angewandten Diskreten Mathematik Dr. Hartmut Lanzinger, Hans- Peter Reck

Seminarvortrag aus Reiner Mathematik Existenz von Primitivwurzeln

Probabilistische Primzahltests

Lenstras Algorithmus für Faktorisierung

1 Zahlentheorie. 1.1 Kongruenzen

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

Einführung in die Algebra

SCHRIFTLICHE ZUSAMMENFASSUNG ZUM VORTRAG DIE GRUNDLAGEN DER RSA-VERSCHLÜSSELUNG VON DANIEL METZSCH

1 Das RSA-Verfahren und seine algorithmischen Grundlagen

1.1 Teilbarkeit, Primzahlen und Teilerfremdheit

3 Vom Zählen zur Induktion

11. Primfaktorzerlegungen

Algebra und Diskrete Mathematik, PS3. Sommersemester Prüfungsfragen

Vorkurs: Mathematik für Informatiker

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Lösung zur Klausur zu Krypographie Sommersemester 2005

3.5 Ringe und Körper. Diese Eigenschaften kann man nun auch. 1. (R, +) ist eine kommutative Gruppe. 2. Es gilt das Assoziativgesetz bezüglich.

Vorlesung. 1 Zahlentheorie in Z. Leitfaden. 1.1 Teilbarkeit. Angela Holtmann. Algebra und Zahlentheorie. (natürliche Zahlen ohne die Null)

Der Zwei-Quadrate-Satz von Fermat

Praktikum Diskrete Optimierung (Teil 11)

11. Übung zur Vorlesung. Zahlentheorie. im Wintersemester 2015/16

Zahlentheorie III. smo osm. Thomas Huber. Inhaltsverzeichnis. Aktualisiert: 1. August 2016 vers

Kleiner Satz von Fermat

Kapitel 4. Euklidische Ringe und die Jordansche Normalform. 4.1 Euklidische Ringe

RSA Verfahren. Kapitel 7 p. 103

Prof. S. Krauter Dezimalbruchdarstellung rationaler Zahlen DezDarst.doc. Über die Darstellung von rationalen Zahlen als Dezimalbrüche.

18 Höhere Ableitungen und Taylorformel

Primzahlen und RSA-Verschlüsselung

Algebra. Patrik Hubschmid. 8. Oktober 2013

Technische Universität München Zentrum Mathematik Propädeutikum Diskrete Mathematik. Weihnachtsblatt

Einführung in die Mathematik (Vorkurs 1 )

Ein RSA verwandtes, randomisiertes Public Key Kryptosystem

Algorithmentheorie Randomisierung. Robert Elsässer

Proseminar SS08 - Miller-Rabin-Primzahltest

Kapitel 3. Natürliche Zahlen und vollständige Induktion

2 Mengen und Abbildungen

Integritätsbereiche und Teilbarkeit

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema

Randomisierte Primzahltests Paul Gamper

7 Untergruppen, Faktorgruppen, Ideale, Restklassenringe

Computeralgebra in der Lehre am Beispiel Kryptografie

Algebraische Kurven. Vorlesung 26. Die Schnittmultiplizität

Zusatztutorium,

Ebene algebraische Kurven

10. Teilbarkeit in Ringen

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Brückenkurs Mathematik

Komplexität von Algorithmen

Faktorisierung ganzer Zahlen mittels Pollards ρ-methode (1975)

Modul Diskrete Mathematik WiSe 2011/12

Das P versus N P - Problem

Was können Schüler anhand von Primzahltests über Mathematik lernen?

Viel Spaÿ! Aufgabe 0.1. Laufzeit unter Verdoppelung (-)

NP-Vollständigkeit. Krautgartner Martin ( ) Markgraf Waldomir ( ) Rattensberger Martin ( ) Rieder Caroline ( )

Primzahltests G abor SAS

5 Zwei spieltheoretische Aspekte

GF(2 2 ) Beispiel eines Erweiterungskörpers (1)

Lösungsblatt zur Vorlesung. Kryptanalyse WS 2009/2010. Blatt 6 / 23. Dezember 2009 / Abgabe bis spätestens 20. Januar 2010, 10 Uhr (vor der Übung)

1. Einleitung wichtige Begriffe

RSA-Verschlüsselung. von Johannes Becker Gießen 2006/2008

Beispiellösungen zu Blatt 7

Partitionen II. 1 Geometrische Repräsentation von Partitionen

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Kommunikationsalgorithmus RSA

WURZEL Werkstatt Mathematik Polynome Grundlagen Teil II

Algebra I. Zwischenprüfung. 19. Februar 2016

Arithmetik und Algebra

15 Optimales Kodieren

Wenn man eine Folge gegeben hat, so kann man auch versuchen, eine Summe. a 0 + a 1 + a 2 +

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

Lösungsvorschlag für die Probeklausuren und Klausuren zu Algebra für Informations- und Kommunikationstechniker bei Prof. Dr.

Mathematik Übungsblatt - Lösung. b) x=2

Seminar der WE AlZAGK. Glatte Zahlen

lim Der Zwischenwertsatz besagt folgendes:

Klausur zur Elementaren Algebra und Zahlentheorie Mittwoch,

Einleitung Shor s Algorithmus Anhang. Thomas Neder. 19. Mai 2009

Numerische Verfahren und Grundlagen der Analysis

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

3 Das RSA-Kryptosystem

Angewandte Diskrete Mathematik

Elementare Zahlentheorie

Einführung in die Algebra

Lösungen zu Aufgabenblatt 7P

3.1.3 Newtonsche Interpolationsformel / Dividierte Differenzen

klar. Um die zweite Bedingung zu zeigen, betrachte u i U i mit u i = 0. Das mittlere -Zeichen liefert s

14. Zur algebraischen Behandlung von Widerstandsschaltungen

Mathematik für Informatiker II Übungsblatt 7

7 Rechnen mit Polynomen

Satz 16 (Multiplikationssatz)

Elementare Zahlentheorie. Diskrete Strukturen. Winter Semester 2012 #

Approximationsalgorithmen

Proseminar: Primzahlen 1. Vortrag Der erweiterte euklidische Algorithmus

Kapitel III. Stetige Funktionen. 14 Stetigkeit und Rechenregeln für stetige Funktionen. 15 Hauptsätze über stetige Funktionen

Faktorisierung bei Brüchen und Bruchtermen

Primzahltests und Faktorisierungsmethoden

Die Klassen P und NP. Dr. Eva Richter. 29. Juni 2012

11. Folgen und Reihen.

Transkript:

PRIMHEITSZERTIFIKATE UND TEST VON PROTH Seminar Primzahltests von zur Gathen & Müller & Krummel Christian Viergutz Sommersemester 2003 Zusammenfassung. Dieser Artikel befasst sich mit Beweisen für die Primheit natürlicher Zahlen. Dazu werden Beispiele für Zertikate angesprochen und gezeigt, dass das Problem, von einer nat. Zahl zu bestimmen, ob sie prim ist, in N P liegt. Darüberhinaus wird der Satz von Proth besprochen, der eine eziente Überprüfung auf Primheit von Zahlen der Form k 2 s + 1 bietet. 1. Primheitsbeweise 1.1. Primheitsbeweise und der kleine Satz von Fermat. Der kleine Satz von Fermat sagt bekanntlich, dass für eine Primzahl p und jede zu p teilerfremde ganze Zahl a gilt: a p 1 1 (mod p). Hiermit kann in vielen Fällen gezeigt werden, dass eine zusammengesetzte Zahl auch wirklich zusammengesetzt ist. Denn oft kann zu einer (vermutlich) zusammengesetzten Zahl n ein Fermat-Zeuge a durch einfaches Ausprobieren (zufällige Wahl) gefunden werden, für welchen ggt(a, n) = 1 und a n 1 1 (mod n) gilt. Im Hinblick auf Primzahltests ist es ungünstig, dass die Umkehrung des Fermatschen Satzes nicht gilt. Ein Gegenbeispiel ist die Kongruenz 8 20 1 (mod 21) mit ggt(8, 21) = 1, denn 21 ist nicht prim. Auch der Gedanke, dieser Fall sei eine Ausnahme und die Basis 8 schlecht gewählt, trügt: Für die sogenannten Carmichael-Zahlen ist a n 1 1 (mod n) für jedes zu n teilerfremde a. Die kleinsten drei Carmichael-Zahlen sind 561, 1105 und 1729. Diese Beobachtungen machen deutlich, dass der kleine Satz von Fermat nicht benutzt werden kann, um wirklich zu beweisen, dass eine Zahl prim ist. Die folgenden Abschnitte beziehen sich hauptsächlich auf Bach & Shallit (1996), Kapitel 9.1.

2 Christian Viergutz 1.2. Drei Anforderungen an einen Primzahltest. Beim Entwurf von Primzahltests versucht man häug, die folgenden drei Forderungen an einen solchen Test möglichst gut zu erfüllen: 1. Geschwindigkeit: Ein Primzahltest sollte, wenn möglich, in Polynomialzeit zeigen, ob eine Zahl prim ist oder nicht. Der zugehörige Algorithmus sollte demnach eine Laufzeit aufweisen, die in der Klasse P liegt. 2. Allgemeinheit: Der Algorithmus sollte für jede Primzahl funktionieren, nicht nur für Primzahlen besonderer Form, wie z.b. Mersenne- oder Fermat-Primzahlen. 3. Korrektheit: Von einem Primzahltest möchten wir erwarten können, dass er einen Beweis (und keine Wahrscheinlichkeit) dafür liefert, dass eine Zahl prim ist. Da oft ein Kompromiss bei der Erfüllung dieser Forderungen gefunden werden muss, könnte man in einem ersten Ansatz auf die erste Forderung, nämlich die Geschwindigkeit, verzichten. Derartige Algorithmen benötigen Zusatzinformationen über die Zahl als Eingabe, welche oft nicht leicht bzw. schnell gefunden werden können. Allerdings garantieren sie dann, einen Beweis für Primheit anzugeben, falls die angegebene Zahl wirklich prim ist. Meistens benötigen diese Verfahren die Faktorisierung als Teilproblem, wofür jedoch bis heute noch kein schnelles (Polynomialzeit-) Verfahren bekannt ist. Ein Ansatz, um Primheit für sehr groÿe Zahlen zu testen, besteht darin, sich bei der Suche auf Primzahlen bestimmter Form zu beschränken, denn für diese Zahlen gewinnt der Faktor Geschwindigkeit immer mehr an Bedeutung. Beispielsweise hat diese Methode mit Hilfe der Mersenne'schen Zahlen (Zahlen der Form n = 2 p 1) oder Fermat-Zahlen (n = 2 2k + 1) zur Entdeckung der gröÿten, bislang bekannten Primzahlen geführt. Dafür wurde aber die Allgemeinheit der Tests geopfert. Der dritte Ansatz verzichtet auf einen exakten Beweis, also Punkt 3. Bei sogenannten probabilistischen Tests wird eine Menge von Zufallszahlen benutzt, um eine Zahl auf Primheit zu überprüfen. Dabei kann es vorkommen, dass eine Antwort fehlerhaft ist. Allerdings ist die Fehlerwahrscheinlichkeit eines solchen Tests für eine beliebige Zahl meist beweisbar gering. Siehe dazu Rabin (1980) und Solovay & Strassen (1977).

Primheitszertikate und Test von Proth 3 In diesem Kapitel widmen wir uns zunächst nur dem ersten Ansatz. Eine Anwendung des zweiten Ansatzes diskutieren wir weiter unten (s. Abschnitt 2 auf Seite 10). 1.3. Z p ist zyklisch. Dieser Abschnitt verfolgt das Ziel zu zeigen, dass für jede Primzahl p die Einheitengruppe Z p zyklisch ist. Dazu werden zunächst einige Lemmata benötigt: Lemma 1.1. Sei P (x) K[x] ein Polynom über dem Körper K mit Grad d. P besitzt dann höchstens d Nullstellen in diesem Körper. Beweis. Sei a K mit P (a) = 0 eine Nullstelle von P. Dann existieren Q, R K[x] mit P (x) = Q(x) (x a)+r(x), wobei deg(r) < 1. Weiterhin ist 0 = P (a) = Q(a) (a a) + R(a) = R(a). Daraus folgt R = 0 (Nullpolynom) und damit P (x) = Q(x) (x a). Aus der letzten Gleichung erhält man deg(p ) = deg(q) + 1. Induktion über den Grad d liefert die Behauptung. Lemma 1.2. Falls p N prim ist, dann hat die Kongruenz x p 1 1 (mod p) genau p 1 Lösungen. Beweis. Nach dem kleinen Satz von Fermat gilt die angegebene Kongruenz für alle zu p teilerfremden ganzen Zahlen x. Dies sind in Z p genau die Elemente 1, 2,..., p 1. Lemma 1.3. Falls d p 1, dann hat die Kongruenz x d 1 (mod p) genau d Lösungen. Beweis. Zur Vereinfachung sei zunächst e := c d = p 1. Wir bilden nun den Quotienten der Polynome P (x) := x e 1 und Q(x) := x d 1: (x e 1)/(x d 1) = x e d + x e 2d +... + =x 0 =1 {}}{ x e cd Daraus folgt, dass Q(x) P (x). Nach Lemma 1.2 besitzt P (x) genau e = p 1 Nullstellen und zerfällt in zwei Polynome der Grade d und e d. Das letztgenannte Polynom kann nach Lemma 1.1 höchstens e d Nullstellen haben, woraus folgt, dass Q(x) mindestens d Nullstellen besitzen muss (um die p 1 Nullstellen von P (x) möglich zu machen). Also besitzt Q(x) genau d Nullstellen und die Behauptung ist bewiesen.

4 Christian Viergutz Lemma 1.4. Sei G eine abelsche Gruppe und a, b G mit ord a = m und ord b = n, wobei ggt(m, n) = 1. Dann gilt ord(ab) = nm. Beweis. Es gilt: (ab) mn = a mn b mn = 1 n 1 m = 1. Sei t := ord(ab). Dies impliziert t mn. Wegen ggt(m, n) = 1 existieren x, y Z mit mx + ny = 1, woraus direkt folgt: a = a 1 = a mx+ny = a mx a ny = a ny. Sei nun angenommen, dass t < mn. Dann existiert eine Primzahl q mit q mn mn, also gibt es ein k mit = q k mn = tk (ab) mn/q = (ab) tk = 1. t t q Weil q prim ist, teilt es mindestens einen der beiden Faktoren m und n. Diese sind aber teilerfremd, weshalb q genau einen der beiden teilt. Gelte o.b.d.a. q m. Dann folgt: a mn/q b} mn/q {{} = a mn/q = 1 =1 Daraus erhält man mit a = a ny (von oben) direkt: a mn/q = ( a m/q) ny = 1 (a ny ) m/q = a m/q = 1 Dies ist aber ein Widerspruch zu ord a = m, da m/q < m ist. Also gilt t = mn und das Lemma ist bewiesen. Mit Hilfe dieser Lemmata können wir nun den folgenden Satz zeigen. Satz 1.5. Für jede Primzahl p ist die Einheitengruppe Z p zyklisch mit der Ordnung p 1. Beweis. Sei zunächst die Primfaktorzerlegung von p 1 = i pe i i gegeben. Nach Lemma 1.3 besitzt die Kongruenz x pe i i 1 (mod p) genau p e i i Lösungen, da p e i i p 1. Unter diesen p e i i Lösungen gibt es nur p e i 1 i viele, nämlich die Lösungen von x pe i 1 i 1 (mod p), die eine Ordnung p k i mit k < e i haben. Aus diesem Grund gibt es genau p e i i p e i 1 i = p e i 1 i (p i 1) Elemente der Ordnung p e i i. Da pe i 1 i (p i 1) p e i 1 i 1 ist, können wir für jedes i ein Element x i mit Ordnung p e i i nden. Sei nun x := i x i. Weil die Ordnungen der x i paarweise teilerfremd sind (Potenzen unterschiedlicher Primzahlen), folgt nach Lemma 1.4, dass sich auch die Ordnungen multiplizieren, wodurch wir erhalten: ( ) ord(x) = ord x i = i i ord(x i ) = i p e i i = p 1 Da Z p genau p 1 Elemente enthält und wir ein Element x mit Ordnung p 1 gefunden haben, ist diese Gruppe damit zyklisch.

Primheitszertikate und Test von Proth 5 1.4. Prinzip des Tests durch die Umkehrung des Fermat-Satzes. Obwohl der kleine Satz von Fermat wie beschrieben alleine keinen Beweis für Primheit liefern kann, lassen sich doch Methoden formulieren, die ihn benutzen. Die dahinter stehende Idee liegt darin, ein Element in der Einheitengruppe Z n mit hinreichend groÿer Ordnung zu nden. Was darunter zu verstehen ist, beschreibt das folgende Lemma 1.6. Ein n N ist genau dann eine Primzahl, wenn die Einheitengruppe Z n ein Element der Ordnung n 1 besitzt. Beweis. Wenn n prim ist, so ist Z n nach Satz 1.5 eine zyklische Gruppe, die ein Element der Ordnung n 1 enthält. Umgekehrt, falls es ein Element der Ordnung n 1 in Z n gibt, dann besitzt die Einheitengruppe die Kardinalität Z n = n 1, was nur für Primzahlen gilt, denn dann sind alle k {1,..., n 1} teilerfremd zu n. Diese Beziehung dient als Grundlage für den folgenden Satz 1.7 (Kraitchik, Lehmer). Eine Zahl n N ist genau dann eine Primzahl, falls ein a existiert mit a n 1 1 (mod n) und a (n 1)/q 1 (mod n) für alle Primzahlen q mit q n 1. Beweis. : Sei n eine Primzahl und a ein Generator von Z n. Die Zahl a hat dann die Ordnung n 1 und es folgt: a n 1 1 (mod n). Weiterhin gilt q n 1 : a (n 1)/q 1 (mod n), denn die Kongruenz a (n 1)/q 1 (mod n) verstieÿe gegen die Ordnung n 1 von a wegen (n 1)/q < n 1. : Sei a wie oben deniert und m := ord n a die Ordnung von a modulo n. Da a n 1 1 (mod n) ist, folgt m n 1. Angenommen m < n 1, dann gibt es eine Primzahl q mit q n 1 n 1, also = k q für ein k N. Es folgt: m m a (n 1)/q = a km 1 (mod n) Dies ist aber ein Widerspruch zur Voraussetzung! Also gilt m = n 1 und nach Lemma 1.6 ist n prim. Bemerkung 1.8. Falls die vollständige Primfaktorzerlegung von n 1 bekannt und n prim ist, dann kann in polynomieller Zeit ein Beweis dieser Tatsache erzeugt werden (siehe dazu Bach & Shallit (1996), S. 268). 1.5. Zertikate für Primzahlen. Im nun folgenden Abschnitt wollen wir uns mit der Frage beschäftigen, ob es leicht zu überprüfende Zeugen (bzw. Zertikate) für die Primheit einer ganzen Zahl gibt. Zur Erinnerung geben wir eine Denition für Verizierer und Zertikate bzw. Zeugen an.

6 Christian Viergutz Definition 1.9. (i) Ein Verikationsalgorithmus oder auch Verizierer ist ein Algorithmus A mit zwei Eingabeparametern x und c, wobei der erste Parameter x die eigentliche Eingabe darstellt und der zweite Parameter eine binäre Zeichenkette c ist, welche Zertikat oder auch Zeuge genannt wird. (ii) Ein Verizierer A veriziert eine Eingabe x, falls ein Zertikat c existiert mit A(x, c) = 1. Dabei liefert A entweder 0 (falsch) oder 1 (wahr) zurück. (iii) Die von einem Verikationsalgorithmus A verizierte Sprache ist L = {x {0, 1} c {0, 1} : A(x, c) = 1} Anhand dieser Denition können wir nun die Sprachklasse N P folgendermaÿen denieren: Definition 1.10. Die Komplexitätsklasse N P ist die Menge der Sprachen, die von einem Verizierer in polynomieller Zeit in der Eingabelänge veriziert werden können. Nach Denition 1.9 gehört eine Sprache L also zu N P, falls es einen Polynomialzeit-Algorithmus A mit zwei Eingabeparametern und eine Konstante b N gibt, so dass { } L = x {0, 1} c : c = O( x b ) A(x, c) = 1 Um diese Denitionen aus der Komplexitätstheorie mit dem Problem der Überprüfung von ganzen Zahlen auf Primheit zu verknüpfen, denieren wir dieses Problem als Sprache über dem Alphabet {0, 1} : Definition 1.11. Wir nennen Primes die Menge aller binären Darstellungen von Primzahlen. Analog dazu bezeichne Composites die Menge aller Binärzahlen, die einen nichttrivialen Teiler besitzen. Es ist oensichtlich, dass das Problem Composites in N P liegt, da wir sehr leicht einen polynomiellen Verikationsalgorithmus dafür angeben können: Algorithmus 1.12. Eingabe: Die Binärdarstellungen der Zahlen n, p, q. Ausgabe: Falls n = p q, dann zusammengesetzt(1), sonst unbekannt(0). 1. Überprüfe, ob p und q die Binär-Codierungen zweier Zahlen zwischen 2 und n 1 sind.

Primheitszertikate und Test von Proth 7 2. Berechne k = p q. 3. Falls k = n, gib 1 zurück, sonst 0. Da für jede zusammengesetzte Zahl n ein Zertikat bestehend aus p und q existiert (wobei p und q nicht eindeutig bestimmt sein müssen), gilt also Composites N P. Es mag vielleicht überraschend sein, aber das gleiche Resultat gilt auch für das Problem Primes, wie im folgenden Satz von Pratt (1975) gezeigt wird. Satz 1.13 (Pratt). Primes N P Beweis. Zunächst wollen wir angeben, in welcher Form ein Zertikat für die Primheit einer Zahl vorliegen kann. Nach Pratt besteht ein Zertikat C(n) für die Primheit von n aus der Angabe einer Faktorisierung von n 1: n 1 = p e 1 1 p e 2 2... p es s Dabei sind die p i ganze Zahlen 2 und die Exponenten e i N. dem Nachweis, dass die Zahlen p 1,..., p s Primzahlen sind, indem Zertikate C(p i ) für alle p i > 2 angegeben werden. der Angabe eines Elementes a Z n mit ord n a = n 1. Die Angabe eines Zertikates impliziert also die Angabe von Zertikaten für alle Primteiler p i > 2 von n 1, weshalb das Verikationsverfahren eine rekursive Struktur aufweist. Diese Rekursion endet bei der Primzahl 2. Ein Beispiel für den Berechnungsbaum zum Beweis der Primheit von 947 ist in Figur 1.1 abgebildet. Dabei sind die Nachfolger eines Knotens m im Baum jeweils die unterschiedlichen Primteiler von m 1. Die Angaben in den Klammern neben den Knoten mit m > 2 sind jeweils Elemente aus Z m mit Ordnung m 1. Anhand eines solchen Zertikates C(n) kann nach Satz 1.7 zweifelsfrei die Primheit von n nachgewiesen werden. Wichtig ist weiterhin, dass ein solcher Berechnungsbaum für zusammengesetzte Zahlen gar nicht konstruiert werden kann, da dann beispielsweise nach Lemma 1.6 keine Elemente der Ordnung n 1 gefunden werden können. Es kann in diesem Sinne also kein Zertikat für die Primheit einer zusammengesetzten Zahl existieren. Die Korrektheit dieses Verikationsverfahrens ist demnach klar. Nun wollen wir noch den Aufwand für die Überprüfung eines solchen Zertikates abschätzen.

8 Christian Viergutz Figur 1.1: Ein Primheitsbeweis für 947 Zunächst betrachten wir, wie viele Knoten ein Berechnungsbaum (wie in Figur 1.1) besitzen kann. Sei dazu T (n) die Zahl der Knoten im Berechnungsbaum für die Primzahl n. Diese Gröÿe lässt sich rekursiv wie folgt denieren: T (2) = 1 und für n 3: T (n) = 1 + p n 1 T (p). Per Induktion zeigen wir, dass T (n) < 2 log 2 n gilt. Dies ist sicherlich richtig für n = 2, weil der zugehörige Baum nur aus einem einzigen Knoten besteht. Sei nun angenommen, dass die Behauptung für alle Primzahlen p < n wahr ist. Weiterhin sei n 1 = p 1 p 2... p k, wobei p 1 = 2 ist (n 1 ist gerade für alle Primzahlen 3) und die p i (nicht notwendigerweise verschiedene) Primzahlen sind. Dann besitzt ein Baum mit Wurzelknoten n 1. einen Knoten für die Wurzel 2. einen Knoten für p 1 = 2 3. und Teilbäume für alle Primzahlen p > 2, die n 1 teilen. Also können wir für n 3 abschätzen: T (n) 1 + T (2) + 2 + k T (p i ) i=2 k 2 log 2 p i i=2 = 2 + 2 log 2 ( n 1 2 ) = 2 (1 + log 2 (n 1) 1) < 2 log 2 n

Primheitszertikate und Test von Proth 9 Nun müssen wir noch überlegen, wie viel Rechenaufwand pro Knoten im Baum entsteht. Sei m ein Knoten mit Vorgänger r. Mit diesem Knoten m verknüpfen wir die Kosten zum 1. Bilden des Produkts der Faktoren von m 1 (die Nachfolger) und die Überprüfung, ob das Produkt auch wirklich m 1 entspricht. 2. Überprüfen, ob a m 1 1 (mod m) gilt. 3. Bestätigen, dass a (r 1)/m 1 (mod r) für den Vorgänger r. Der erste Schritt benötigt ein quadratische Anzahl von Bitoperationen in der Eingabelänge log 2 n, hat also Komplexität O(log 2 n). Die modulare Exponentiation in den Schritten 2. und 3. benötigt jeweils O(log 3 n) Operationen. Da es im Baum insgesamt O(log n) Knoten gibt, sind die resultierenden Gesamtkosten für die Verikation O(log 4 n) Bitoperationen. Daher ist es mit dem angegebenen Zertikat möglich, in polynomieller Zeit (in der Eingabelänge) zu verizieren, ob eine Zahl n prim ist. Damit ist der Beweis vollständig, dass Primes N P.

10 Christian Viergutz 2. Test von Proth 2.1. Einführung. In diesem Abschnitt befassen wir uns mit einem Primzahltest für positive, ganze Zahlen von bestimmter Form, wie in Abschnitt 1.2 bereits angesprochen. Der Test von Proth liefert eine eziente Methode, Zahlen der Form k 2 s + 1, k, s N, auf Primheit zu überprüfen und diese Eigenschaft auch zu beweisen. Dabei hängt der Test nicht davon ab, dass die gesamte Primfaktorzerlegung von n 1 bekannt sein muss, sondern nur eine teilweise Faktorisierung. 2.2. Das Pocklington-Lemma. Um den Satz, der als Grundlage für den Test von Proth dient, zu beweisen, benötigen wir das folgende Lemma 2.1 (Pocklington). Sei n 1 = q k r, wobei q eine Primzahl ist, die kein Teiler von r ist (q / r). Falls dann ein a existiert, für welches die Bedingungen a n 1 1 (mod n) und ggt(a (n 1)/q 1, n) = 1 gelten, dann ergibt sich für jeden Primteiler p n: p 1 (mod q k ) Beweis. Angenommen, a sei derart wie im Lemma beschrieben und p ein Primteiler von n. Weiterhin sei t := ord p a die Ordnung von a modulo p. Da a n 1 1 (mod n) ist, muss auch a n 1 1 (mod p) gelten, weil p ein Teiler von n ist. Daraus folgt t n 1 = q k r, weil t die kleinste natürliche Zahl mit a t 1 (mod p) ist. Da a (n 1)/q 1 zu n teilerfremd ist, gilt auch p / a (n 1)/q 1 und damit a (n 1)/q 1 (mod p). Weiterhin gibt es ein l, so dass l t = q k r gilt (wegen t n 1) und deshalb q k l t. Es ist t = ord p a = q j s für ein j k und ein s r. Angenommen j < k, dann ist q j s ein Teiler von q k 1 r und wir erhalten: a (n 1)/q = a (qk r)/q = a qk 1r 1 (mod p), was im Widerspruch zu ggt(a (n 1)/q 1, n) = 1 steht, da p in diesem Fall ein gemeinsamer Teiler wäre. Also folgt j = k und somit q k t. Darüberhinaus wissen wir, dass t p 1, weil die Ordnung jedes Elementes einer Gruppe die Gruppenordnung teilt und Z p = p 1 gilt. Mit der Transitivität der Teiler-Beziehung folgt wie behauptet: q k p 1 p 1 (mod q k ). Korollar 2.2. Sei n 1 = m r, wobei m > n 1 und ggt(m, r) = 1. Falls ein a existiert mit a n 1 1 (mod n) und ggt(a (n 1)/q 1, n) = 1 für jeden Primteiler q m, dann ist n eine Primzahl.

Primheitszertikate und Test von Proth 11 Beweis. Angenommen n sei zusammengesetzt und p sei der kleinste Primfaktor von n. Wir wissen: p n. Aus Lemma 2.1 folgt, dass p 1 (mod q k ) für alle q k m. Durch den Chinesischen Restsatz erhalten wir p 1 (mod m). Deshalb gilt p m + 1 und damit p > n. Widerspruch! Beispiel 2.3. Sei n = 281, also n 1 = 280 = 35 8, wobei 281 1 16 < 35 und ggt(35, 8) = 1 ist. Für a = 2 gilt 2 280 1 (mod 281) und ggt(2 280/7 1, 281) = 1 = ggt(2 280/5 1, 281). Nach Korollar 2.2 ist 281 damit prim. 2.3. Satz von Proth. Satz 2.4 (Test von Proth). Sei n = k 2 s + 1 mit 1 k < 2 s. Dann sind die folgenden Aussagen äquivalent: (i) n ist eine Primzahl (ii) a Z : a (n 1)/2 1 (mod n) Beweis. (ii) (i): Sei a Z wie in (ii) angegeben. Dann gilt für dieses a auch a n 1 1 (mod n) (durch Quadrieren), wie in Korollar 2.2 vorausgesetzt. Weiterhin gilt n 1 = k 2 s und 2 s > n 1 und ggt(k, 2 s ) = 1, da o.b.d.a. ein eventueller Faktor 2 von k schon in 2 s integriert wäre. Da der einzige Primteiler von 2 s die Zahl 2 selbst ist, müssen wir noch überprüfen, ob ggt(a (n 1)/2 1, n) = 1 gilt. Nach Voraussetzung wissen wir: n a (n 1)/2 + 1. Wegen ggt(x, y) = ggt(x, y mod x) können wir schlieÿen: ggt ( a (n 1)/2 1, n ) = ggt ( n, ( a (n 1)/2 1 ) mod n ) = ggt(n, 2) = 1 (wegen n ungerade) Aus Korollar 2.2 erhält man dann mit den genannten Voraussetzungen, dass n prim ist. (i) (ii): Da n eine Primzahl ist, gilt nach dem kleinen Satz von Fermat: a n 1 1 (mod n) für alle zu n teilerfremden ganzen Zahlen a. Insbesondere gibt es für eine Primzahl n stets eine Primitivwurzel g, d.h. < g >= Z n und ord n (g) = n 1. Aus g n 1 1 (mod n) und n prim folgt i.a., dass 1 nur die Wurzeln 1 oder 1 besitzen kann: g (n 1)/2 1 (mod n) g (n 1)/2 1 (mod n) Da g aber Z n erzeugt und die Ordnung n 1 besitzt, kann der linke Fall nicht eintreten, da sonst n 1 den Exponenten (n 1)/2 teilte, was ein

12 Christian Viergutz Widerspruch ist. Daher folgt a Z : a (n 1)/2 1 (mod n) und damit ist auch die zweite Beweisrichtung gezeigt. Beispiel 2.5. Gegeben sei n = 41 = 5 2 3 + 1. Um zu beweisen, dass 41 prim ist, müssen wir nach Satz 2.4 nun ein a nden mit a (n 1)/2 1 (mod 41) a 20 40 (mod 41) Für a = 2 erhalten wir 2 20 1 (mod 41), aber schon für a = 3 gilt 3 20 40 (mod 41), womit der Test von Proth n = 41 als Primzahl bestätigt. Literatur Eric Bach & Jeffrey Shallit (1996). Algorithmic Number Theory, Vol.1: Ecient Algorithms. MIT Press, Cambridge MA. V. Pratt (1975). Every prime has a succinct certicate. SIAM Journal on Computing 4, 214220. Michael O. Rabin (1980). Probabilistic Algorithms for Testing Primality. Journal of Number Theory 12, 128138. R. Solovay & V. Strassen (1977). A fast Monte-Carlo test for primality. SIAM Journal on Computing 6(1), 8485. Erratum in 7 (1978), p. 118. Christian Viergutz Eringerfelder Straÿe 21 33142 Büren-Steinhausen viergutz@upb.de