Effiziente Algorithmen f ¨ur den Primzahltest

Werbung
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
Herunterladen