Arbeitsblatt 3

Werbung
Prof. Dr. Gerhard Berendt
SS 2005
Mathematische Grundlagen der Codierung / Endliche Strukturen
Arbeitsblatt 3 / S. 1 von 4
Die EULERsche -Funktion.
Wie in der Analysis Abbildungen aus R nach R , existieren auch in der Zahlentheorie
Funktionen, deren Definitionsbereich die Menge der ganzen Zahlen oder eine
Teilmenge davon ist, und deren Wertevorrat aus ganzen (oder auch reellen) Zahlen
besteht. Eine in der elementaren Zahlentheorie häufig benutzte derartige Funktion ist
die EULERsche -Funktion.
Definition 3.1:
Die Funktion N  N : (n): = Anzahl der Zahlen 0 < k < n mit ggT(k,n) = 1 wird
als EULERsche - (Totient-) Funktion bezeichnet.
Folgerungen:
a)
Für eine Primzahl p gilt (p) = p – 1 .
b)
Für eine Primzahlpotenz p k gilt (p k) = p k – p k-1 = p k (1 – 1/p) .
(Die Anzahl der Zahlen zwischen 0 und p k – 1, die nicht relativ prim zu p k
sind, sind genau diejenigen, die durch p teilbar sind, und davon gibt es p k-1.)
Eine wichtige Eigenschaft der -Funktion wird durch den folgenden Satz
beschrieben:
Satz 3.2:
Seien a und b positiv ganz und relativ prim, dann gilt (ab) = (a)  (b).
Beweis:
(ab) ist die Anzahl der ganzen Zahlen zwischen 0 und ab – 1, die keinen
gemeinsamen Faktor mit a  b besitzen. Sei für jedes j in diesem Bereich j1 der
kleinste nicht-negative Rest modulo a und j2 der kleinste nicht-negative Rest
modulo b. Aus dem Chinesischen Restsatz folgt, daß es für jedes Paar j1 , j2 genau
ein j zwischen 0 und ab – 1 gibt, für das j  j1 mod a und j  j2 mod b gilt. j hat
genau dann keinen gemeinsamen Faktor mit a b, wenn es keinen gemeinsamen
Faktor mit a hat (was äquivalent damit ist, daß j1 keinen gemeinsamen Faktor mit a
besitzt) und wenn es keinen gemeinsamen Faktor mit b hat (was äquivalent damit ist,
daß j2 keinen gemeinsamen Faktor mit b besitzt). Daher sind die zu zählenden Werte
von j eineindeutig zugeordnet den Paaren j1 , j2 mit 0  j1 <a , ggT( j1 , a) = 1 und
0  j2 <b , ggT( j2 , b) = 1. Davon jedoch gibt es (a)  (b).
Prof. Dr. Gerhard Berendt
SS 2005
Mathematische Grundlagen der Codierung / Endliche Strukturen
Arbeitsblatt 3 / S. 2 von 4
Da jede Zahl n als Produkt von Primzahlpotenzen geschrieben werden kann, die
jeweils teilerfremd zueinander sind, folgt aus (p k) = p k – p k-1 = p k (1 – 1/p) für
k
k
k
n  p1 1 p2 2  pr r :
 1
(n)  n   1  
p
p| n 
.
Eine weitere nützliche Eigenschaft der EULER-Funktion formuliert
Satz 3.3:
Sei n eine natürliche Zahl. Dann gilt
 ( d )  n .
d |n
Hierbei ist die Summe über alle Teiler d von n (inklusive 1 und n) zu bilden.
Der Beweis dieses Satzes benutzt die Multiplikativität der EULER-Funktion und
kann z.B. bei Koblitz, N.: "A Course in Number Theory and Cryptography", Springer
Verlag 1987 nachgelesen werden.
Beispiel:
Sei n = 30. Dann sind die Teiler von n die Zahlen 1, 2, 3, 5, 6, 10, 15 und 30, und es
ist
(1)  (2)  (3)  (5)  (6)  (10)  (15)  (30) 
11 2  4  2  4  8  8
 30
Im folgenden sind einige Werte der EULER-Funktion notiert:
n
1
2
3
4
5
6
7
8
9
10
30
31
32
50 100
(n) 1
1
2
2
4
2
6
4
6
4
8
30
16
20
40
Während die hier notierten Aussagen die Berechnung der EULERschen -Funktion
für Zahlen, deren Faktorisierung bekannt ist oder leicht ermittelt werden kann, ohne
großen Aufwand ermöglichen, trifft dies nicht für (große) Zahlen zu, deren Zerlegung
in Primfaktoren (oder zumindest teilerfremde Faktoren) nicht bekannt ist. Diese
Feststellung gewinnt u.a. in der Kryptologie an Bedeutung.
Prof. Dr. Gerhard Berendt
SS 2005
Mathematische Grundlagen der Codierung / Endliche Strukturen
Arbeitsblatt 3 / S. 3 von 4
Die Sätze von FERMAT und EULER.
Für den Fall, dass der Modul eine Primzahl p ist, ist die Menge Z / pZ ein
Körper und daher die Menge {1, 2, 3, ...p-1} eine endliche abelsche Gruppe.
Sukzessive Multiplikation etwa eines Elementes mit sich selbst führt mithin nicht aus
der Menge heraus. Die Frage, ob, und ggf. wann auf diese Weise wieder die 1
erreicht wird, beantwortet der so genannte kleine Satz von FERMAT, der sich als
Spezialfall eines Satzes von EULER ergibt.
Satz 3.4 (Satz von Euler):
Seien n, a  N und (n) die Anzahl der zu n teilerfremden Zahlen kleiner als n
(EULERsche -Funktion). Dann gilt für teilerfremde Zahlen a und n :
a (n) = 1 mod n.
Beweis:
Seien r1 , r2 , . . . r (n) die zu n teilerfremden Zahlen kleiner als n. Dann sind n.V.
auch die Zahlen ar1 , ar2 , . . . ar (n) teilerfremd zu n, und, wie die ri sämtlich in
verschiedenen Restklassen modulo n . Das bedeutet aber, daß modulo n jedes ari
gleich einem rj sein muß, und damit
ar1  ar2  . . .  ar (n) = a(n)  r1  r2 . . .  r (n) = r1  r2 . . .  r (n) mod n
gilt. Da sämtliche ri teilerfremd zu n sind, kann durch ihr Produkt dividiert werden,
und es folgt die Behauptung.
Als Folgerung aus dem Satz von EULER erhält man sofort den
Satz 3.5 (Satz von FERMAT):
Sei p eine Primzahl. Dann gilt für jede ganze Zahl a , daß a p = a mod p, und für
jedes nicht durch p dividierbare a, daß a p-1 = 1 mod p ist.
Beweis:
Da p eine Primzahl ist, gilt (p) = p - 1. Hieraus folgt sofort die zweite Aussage.
Die erste Aussage ist trivial, wenn a durch p teilbar ist, andernfalls folgt sie, da für
alle a gilt, daß a = a mod p ist.
Als Korollar folgt
Prof. Dr. Gerhard Berendt
SS 2005
Mathematische Grundlagen der Codierung / Endliche Strukturen
Arbeitsblatt 3 / S. 4 von 4
Korollar 3.6:
Falls a nicht durch p teilbar ist, und für n  m mod (p - 1) gilt, ist a n = a m mod p .
Beweis:
Sei n > m . Da p - 1 | n – m, ist n = m + c  (p – 1) für ein positives ganzes c. Multipliziert man nun die Kongruenz a p-1 = 1 mod p c mal mit sich selbst und danach
mit a m = a m mod p , dann erhält man das gewünschte Resultat a n = a m mod p .
Diese Sätze sind u.a. die Grundlage für die Berechnung großer Primzahlen. Da der
naive Algorithmus zur Berechnung von Potenzen für große Exponenten e jedoch
einen Rechenaufwand von O(e) - maximal O(m) mit m als Modul - erfordert, benötigt
man für die Potenzierung in Restklassen (mit großem Modul) einen schnelleren
Algorithmus. Dazu nutzt man die Darstellung des Exponenten im Binärsystem und
reduziert bei jeder Multiplikation modulo m:
Algorithmus 3.7 zur Berechnung von a e mod m (Potenzierung in Restklassen):
1.
Setze p = 1, q = e.
2.
Falls q = 0 ist, gib p aus und beende den Algorithmus.
3.
Setze r = q mod 2, q = q / 2. Falls r = 1 ist, setze p = p  a mod m.
4.
Setze p = p 2 mod m. Gehe zu 2.
Dieser Algorithmus enthält O(log e) Schritte und in jedem Schleifenschritt eine
Division und zwei Multiplikationen und damit maximal O(log3 m) Binäroperationen.
Der Algorithmus 4.7 ist also für große Exponenten um ein Vielfaches schneller als
die sukzessive Ausführung der Multiplikationen der Basis.
Aufgabe:
Implementieren Sie den Algorithmus in einer Ihnen geläufigen höheren
Programmiersprache.
Herunterladen