PRIMHEITSZERTIFIKATE UND TEST VON PROTH

Transcription

PRIMHEITSZERTIFIKATE UND TEST VON PROTH
PRIMHEITSZERTIFIKATE UND
TEST VON PROTH
Seminar Primzahltests
von zur Gathen & Müller & Krummel
Christian Viergutz
Sommersemester 2003
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 · 2s + 1 bietet.
Zusammenfassung.
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 teip−1
lerfremde ganze Zahl a gilt: a
≡ 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
ein Fermat-Zeuge
n
a
durch einfaches Ausprobieren (zufällige Wahl) gefunden
n−1
werden, für welchen ggT(a, n) = 1 und a
6≡ 1 (mod n) gilt.
Im Hinblick auf Primzahltests ist es ungünstig, dass die Umkehrung des
20
Fermatschen Satzes nicht gilt. Ein Gegenbeispiel ist die Kongruenz 8
≡
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
n−1
die sogenannten Carmichael-Zahlen ist a
≡ 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 Polynomi-
alzeit 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 (Zahp
2k
len der Form n = 2 − 1) oder Fermat-Zahlen (n = 2
+ 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
Z∗p zyklisch ist. Dazu werden zunächst
einige Lemmata benötigt:
jede Primzahl
p
die Einheitengruppe
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.
Lemma 1.1.
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. Sei
Beweis.
Falls p ∈ N prim ist, dann hat die Kongruenz xp−1 ≡ 1 (mod p)
genau p − 1 Lösungen.
Lemma 1.2.
Nach dem kleinen Satz von Fermat gilt die angegebene Kongru-
Beweis.
p teilerfremden
1, 2, . . . , p − 1.
enz für alle zu
Elemente
Lemma 1.3.
Lösungen.
ganzen Zahlen
x.
Dies sind in
Zp
genau die
Falls d | p − 1, dann hat die Kongruenz xd ≡ 1 (mod p) genau d
Zur Vereinfachung sei zunächst e := c · d = p − 1. Wir bilden nun
e
d
den Quotienten der Polynome P (x) := x − 1 und Q(x) := x − 1:
Beweis.
=x0 =1
z }| {
(xe − 1)/(xd − 1) = xe−d + xe−2d + . . . + xe−cd
Daraus folgt, dass
p−1
Q(x) | P (x).
P (x) genau e =
der Grade d und e − d. Das
höchstens e − d Nullstellen
Nach Lemma 1.2 besitzt
Nullstellen und zerfällt in zwei Polynome
letztgenannte Polynom kann nach Lemma 1.1
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.
haben, woraus folgt, dass
Christian Viergutz
4
Lemma 1.4.
ord b
Sei G eine abelsche Gruppe und a, b ∈ G mit
ggT(m, n) = 1. Dann gilt ord(ab) = nm.
= n, wobei
ord a
= m und
(ab)mn = amn · bmn = 1n · 1m = 1. Sei t := ord(ab). Dies
impliziert t | mn. Wegen ggT(m, n) = 1 existieren x, y ∈ Z mit mx + ny = 1,
1
mx+ny
woraus direkt folgt: a = a = a
= amx · any = any .
Sei nun angenommen, dass t < mn. Dann existiert eine Primzahl q mit
mn
= q · k ⇒ mn
= tk ⇒ (ab)mn/q = (ab)tk = 1.
q | t , also gibt es ein k mit mn
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:
mn/q
=1
amn/q · b|mn/q
{z } = a
Beweis.
Es gilt:
=1
Daraus erhält man mit
a = any
amn/q = am/q
(von oben) direkt:
ny
= 1 ⇒ (any )m/q = am/q = 1
Dies ist aber ein Widerspruch zu ord a
t = mn
= m,
da
m/q < m
ist. Also gilt
und das Lemma ist bewiesen.
Mit Hilfe dieser Lemmata können wir nun den folgenden Satz zeigen.
Für jede Primzahl p ist die Einheitengruppe Z∗p zyklisch mit der
Ordnung p − 1.
Satz 1.5.
Q
p−1 = i pei i gegeben.
e
ei
p i
Nach Lemma 1.3 besitzt die Kongruenz x i ≡ 1 (mod p) genau pi Lösungen,
ei −1
ei
ei
viele, nämlich die
da pi | p − 1. Unter diesen pi Lösungen gibt es nur pi
e −1
pi i
k
Lösungen von x
≡ 1 (mod p), die eine Ordnung pi mit k < ei haben.
ei
ei −1
= piei −1 · (pi − 1) Elemente der
Aus diesem Grund gibt es genau pi − pi
ei
ei −1
· (pi − 1) ≥ pei i −1 ≥ 1 ist, können wir für jedes i ein
Ordnung pi . Da pi
ei
Element xi mit Ordnung pi nden.
Q
Sei nun x :=
i xi . Weil die Ordnungen der xi paarweise teilerfremd sind
Beweis.
Sei zunächst die Primfaktorzerlegung von
(Potenzen unterschiedlicher Primzahlen), folgt nach Lemma 1.4, dass sich
auch die Ordnungen multiplizieren, wodurch wir erhalten:
!
ord(x)
= ord
Y
i
xi
=
Y
i
ord(xi )
=
Y
pei i = p − 1
i
Z∗p genau p − 1 Elemente enthält und wir ein Element x
p − 1 gefunden haben, ist diese Gruppe damit zyklisch.
Da
mit Ordnung
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 Ein∗
heitengruppe Zn mit hinreichend groÿer Ordnung zu nden. Was darunter
zu verstehen ist, beschreibt das folgende
Ein n ∈ N ist genau dann eine Primzahl, wenn die Einheitenein Element der Ordnung n − 1 besitzt.
Lemma 1.6.
gruppe
Z∗n
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 Zn gibt, dann besitzt die Einheitengruppe die Kar∗
dinalität |Zn | = 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
Eine Zahl n ∈ N ist genau dann eine Primzahl, falls ein a existiert mit a
≡ 1 (mod n) und a(n−1)/q 6≡ 1 (mod n) für
alle Primzahlen q mit q | n − 1.
Satz 1.7 (Kraitchik, Lehmer).
n−1
a ein Generator von Z∗n . Die Zahl
a hat dann die Ordnung n − 1 und es folgt: an−1 ≡ 1 (mod n). Weiterhin gilt
∀q | n − 1 : a(n−1)/q 6≡ 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 := ordn a die Ordnung von a modulo
n−1
n. Da a
≡ 1 (mod n) ist, folgt m | n − 1. Angenommen m < n − 1, dann
n−1
n−1
, also
= k · q für ein k ∈ N. Es folgt:
gibt es eine Primzahl q mit q |
m
m
Beweis.
⇒: Sei
n
eine Primzahl und
a(n−1)/q = akm ≡ 1 (mod n)
Dies ist aber ein Widerspruch zur Voraussetzung! Also gilt
nach Lemma 1.6 ist
n
m = n−1
und
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
(i) Ein Verikationsalgorithmus oder auch Verizieist 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.
Definition 1.9.
rer
(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
NP
folgen-
dermaÿen denieren:
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
Definition 1.10.
o
n
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} :
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.
Definition 1.11.
Es ist oensichtlich, dass das Problem Composites in
NP
liegt, da
wir sehr leicht einen polynomiellen Verikationsalgorithmus dafür angeben
können:
Algorithmus 1.12.
Eingabe: Die Binärdarstellungen der Zahlen
Ausgabe: Falls
n = p · q,
1. Überprüfe, ob
und
n−1
p
sind.
und
n, p, q .
dann zusammengesetzt(1), sonst unbekannt(0).
q
die Binär-Codierungen zweier Zahlen zwischen
2
Primheitszertikate und Test von Proth
k = p · q.
k = n, gib 1 zurück,
7
2. Berechne
3. Falls
sonst 0.
n ein Zertikat bestehend aus p und
p und q nicht eindeutig bestimmt sein müssen), gilt also
∈ N P . Es mag vielleicht überraschend sein, aber das gleiche
Da für jede zusammengesetzte Zahl
q
existiert (wobei
Composites
Resultat gilt auch für das Problem Primes, wie im folgenden Satz von Pratt
(1975) gezeigt wird.
Satz 1.13 (Pratt). Primes
Beweis.
∈ NP
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)
◦
n
für die Primheit von
aus
der Angabe einer Faktorisierung von
n − 1:
n − 1 = pe11 · pe22 · . . . · pess
Dabei sind die
◦
≥2
ganze Zahlen
C(pi )
für alle
pi > 2
der Angabe eines Elementes
und die Exponenten
p1 , . . . , p s
dem Nachweis, dass die Zahlen
tikate
◦
pi
ei ∈ N.
Primzahlen sind, indem Zer-
angegeben werden.
a ∈ Z∗n
mit ordn
a = n − 1.
Die Angabe eines Zertikates impliziert also die Angabe von Zertikaten
für alle Primteiler
pi > 2
von
n − 1,
weshalb das Verikationsverfahren ei-
ne 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
Baum jeweils die unterschiedlichen Primteiler von
den Klammern neben den Knoten mit
mit Ordnung
im
m − 1.
Die Angaben in
∗
sind jeweils Elemente aus Zm
m − 1.
Anhand eines solchen Zertikates
Primheit von
m>2
m
n
C(n) kann nach Satz 1.7 zweifelsfrei die
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
T (n) die Zahl der Knoten im Berechnungsn. Diese Gröÿe lässt
P 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 log2 n gilt. Dies ist sicherlich richtig für n = 2, weil der
Figur 1.1) besitzen kann. Sei dazu
baum für die Primzahl
zugehörige Baum nur aus einem einzigen Knoten besteht. Sei nun angenom-
p < n wahr ist. Weiterhin sei
(n − 1 ist gerade für alle Primzah-
men, dass die Behauptung für alle Primzahlen
n − 1 = p1 p2 · . . . · pk , wobei p1 = 2 ist
len ≥ 3) und die pi (nicht notwendigerweise
Dann besitzt ein Baum mit Wurzelknoten n
verschiedene) Primzahlen sind.
1. einen Knoten für die Wurzel
2. einen Knoten für
p1 = 2
3. und Teilbäume für alle Primzahlen
Also können wir für
n≥3
T (n) ≤ 1 + T (2) +
p > 2,
die
n−1
teilen.
abschätzen:
k
X
T (pi )
i=2
≤ 2+
k
X
2 log2 pi
i=2
= 2 + 2 log2
n−1
2
= 2 · (1 + log2 (n − 1) − 1) < 2 log2 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
m − 1 (die Nachfolger)
wirklich m − 1 entspricht.
1. Bilden des Produkts der Faktoren von
Überprüfung, ob das Produkt auch
2. Überprüfen, ob
am−1 ≡ 1 (mod m)
3. Bestätigen, dass
und die
gilt.
a(r−1)/m 6≡ 1 (mod r)
für den Vorgänger
r.
Der erste Schritt benötigt ein quadratische Anzahl von Bitoperationen in der
2
Eingabelänge log2 n, hat also Komplexität O(log n). Die modulare Exponen3
tiation in den Schritten 2. und 3. benötigt jeweils O(log n) Operationen. Da
es im Baum insgesamt
O(log n) Knoten gibt, sind die resultierenden GesamtO(log4 n) Bitoperationen.
kosten für die Verikation
Daher ist es mit dem angegebenen Zertikat möglich, in polynomieller
Zeit (in der Eingabelänge) zu verizieren, ob eine Zahl
der Beweis vollständig, dass Primes
∈ N P.
n
prim ist. Damit ist
10
Christian Viergutz
2. Test von Proth
2.1. Einführung.
In diesem Abschnitt befassen wir uns mit einem Prim-
zahltest für positive, ganze Zahlen von bestimmter Form, wie in Abschnitt 1.2
bereits angesprochen. Der Test von Proth liefert eine eziente Methode, Zahs
len der Form k · 2 + 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
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 an−1 ≡ 1 (mod n) und ggT(a(n−1)/q − 1, n) = 1 gelten, dann ergibt
sich für jeden Primteiler p | n:
Lemma 2.1 (Pocklington).
p ≡ 1 (mod q k )
Beweis.
Angenommen,
a
sei derart wie im Lemma beschrieben und
p
p.
ein
n. Weiterhin sei t := ordp a die Ordnung von a modulo Da
a
≡ 1 (mod n) ist, muss auch an−1 ≡ 1 (mod p) gelten, weil p ein Teiler
k
von n ist. Daraus folgt t | n − 1 = q r , weil t die kleinste natürliche Zahl mit
at ≡ 1 (mod p) ist.
(n−1)/q
Da a
− 1 zu n teilerfremd ist, gilt auch p /| a(n−1)/q − 1 und damit
a(n−1)/q 6≡ 1 (mod p). Weiterhin gibt es ein `, so dass ` · t = q k r gilt (wegen
t | n − 1) und deshalb q k | ` · t. Es ist t = ordp 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:
Primteiler von
n−1
a(n−1)/q = a(q
was im Widerspruch zu ggT(a
= aq
k−1 r
≡ 1 (mod p),
(n−1)/q
gemeinsamer Teiler wäre. Also
wissen wir, dass
k r)/q
− 1, n) = 1 steht, da p in diesem Fall ein
k
folgt j = k und somit q | t. Darüberhinaus
t | p − 1,
weil die Ordnung jedes Elementes einer Gruppe
∗
Zp = p − 1 gilt. Mit der Transitivität der
k
k
Teiler-Beziehung folgt wie behauptet: q | p − 1 ⇔ p ≡ 1 (mod q ).
die Gruppenordnung teilt und
√
Sei n − 1 = m · r, wobei m > n − 1 und ggT(m, r) = 1.
Falls ein a existiert mit an−1 ≡ 1 (mod n) und ggT(a(n−1)/q − 1, n) = 1 für
jeden Primteiler q | m, dann ist n eine Primzahl.
Korollar 2.2.
Primheitszertikate und Test von Proth
11
Angenommen n sei zusammengesetzt und p sei der kleinste Prim√
faktor von n. Wir wissen: p ≤
n. Aus Lemma 2.1 folgt, dass p ≡ 1 (mod q k )
k
für alle q | m. Durch den Chinesischen Restsatz erhalten wir p ≡ 1 (mod m).
Beweis.
Deshalb gilt
p≥m+1
und damit
p>
√
n.
Widerspruch!
√
n = 281, also n − 1 = 280 = 35 · 8, wobei 281 − 1 ≈
16 < 35 und ggT(35, 8) = 1 ist. Für a = 2 gilt 2280 ≡ 1 (mod 281) und
280/7
ggT(2
− 1, 281) = 1 = ggT(2280/5 − 1, 281). Nach Korollar 2.2 ist 281
damit prim.
♦
Beispiel 2.3. Sei
2.3. Satz von Proth.
Sei n = k · 2s + 1 mit 1 ≤ k < 2s . Dann sind die
folgenden Aussagen äquivalent:
Satz 2.4 (Test von Proth).
(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
n−1
≡ 1 (mod n) (durch Quadrieren),
wie in Korollar 2.2 vorausgesetzt.
√
s
s
Weiterhin gilt n − 1 = k · 2 und 2 >
n − 1 und ggT(k, 2s ) = 1, da o.B.d.A.
s
ein eventueller Faktor 2 von k schon in 2 integriert wäre.
s
Da der einzige Primteiler von 2 die Zahl 2 selbst ist, müssen wir noch
(n−1)/2
überprüfen, ob ggT(a
− 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:
(n−1)/2
ggT a
− 1, n = ggT n, a(n−1)/2 − 1 mod n
= ggT(n, −2) = 1 (wegen n ungerade)
auch
a
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:
an−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 >= Zn und
n−1
ordn (g) = n − 1. Aus g
≡ 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)
Da
g
aber
Z∗n
∨
g (n−1)/2 ≡ −1 (mod n)
erzeugt und die Ordnung
nicht eintreten, da sonst
n−1
n−1
besitzt, kann der linke Fall
den Exponenten
(n − 1)/2
teilte, was ein
12
Christian Viergutz
Widerspruch ist. Daher folgt
∃ a ∈ Z : a(n−1)/2 ≡ −1 (mod n)
n = 41 = 5 · 23 + 1. Um zu
Satz 2.4 nun ein a nden mit
Beispiel 2.5. Gegeben sei
prim ist, müssen wir nach
und damit ist
auch die zweite Beweisrichtung gezeigt.
beweisen, dass 41
a(n−1)/2 ≡ −1 (mod 41) ⇔ a20 ≡ 40 (mod 41)
a = 2 erhalten wir 220 ≡ 1 (mod 41), aber schon für a = 3 gilt 320 ≡
40 (mod 41), womit der Test von Proth n = 41 als Primzahl bestätigt.
♦
Für
Literatur
&
(1996). Algorithmic Number Theory, Vol.1:
Ecient Algorithms. MIT Press, Cambridge MA.
(1975). Every prime has a succinct certicate. SIAM Journal on Computing , 214220.
(1980). Probabilistic Algorithms for Testing Primality. Journal of Number Theory , 128138.
&
(1977). A fast Monte-Carlo test for primality. SIAM
Journal on Computing (1), 8485. Erratum in (1978), p. 118.
Eric Bach
Jeffrey Shallit
V. Pratt
4
Michael O. Rabin
12
R. Solovay
V. Strassen
6
Christian Viergutz
Eringerfelder Straÿe 21
33142 Büren-Steinhausen
[email protected]
7

Documents pareils