V03 - Manfred Gruber

Werbung
Der euklidische Algorithmus
Manfred Gruber
http://www.lrz-muenchen.de/~gruber
SS 2009, KW 13
M. Gruber, SS 2009
Diskrete Mathematik
Gröÿter gemeinsamer Teiler
Denition 1. [Teiler]
von n
2Z
Eine Zahl m
, wenn der Quotient
von n, schreibt man m
j
2Z
n
m
2N
ist. Ist m Teiler
n, andernfalls m
Denition 2. [ggT]
ist Teiler
- n.
Gröÿter gemeinsamer Teiler
(ggT) zweier Zahlen m; n
2
Z
ist diejenige gröÿte
Zahl, die zugleich Teiler von m und n ist. Diese Zahl
ist eindeutig bestimmt und wird mit
ggT(m; n)
be-
zeichnet.
Bemerkung 1.
denn n teilt
0
Für n >
0
ist
ggT(0; n) =
n,
und n, andrerseits können Teiler von
0
und n nicht gröÿer als n sein.
Bemerkung 2.
ggT(0; 0)
die Menge der Teiler von
0
ist nicht deniert, denn
ist unbeschränkt und hat
kein Maximum.
1
M. Gruber, SS 2009
Primzahlen
Denition 3. [teilerfremd]
Z
heiÿen teilerfremd, wenn
Denition 4. [prim]
(Primzahl), wenn
1
Diskrete Mathematik
Zwei Zahlen m; n
ggT(m; n) = 1
Eine Zahl p >
1
2
ist.
heiÿt prim
und p die einzigen Teiler von p
sind.
Bemerkung 3.
Ist p prim, so ist p teilerfremd zu
allen positiven Zahlen kleiner p.
Satz 1. [Fundamentalsatz der Arithmetik]
Jede Zahl n
2N
kann als Produkt von Primzahlen
n
=
1 pm
p
dargestellt werden und unter der Bedingung
1 : : : pm:
p
ist diese Darstellung eindeutig.
2
M. Gruber, SS 2009
Diskrete Mathematik
oor, modulo
Denition 5. [oor]
Für x
2R
bezeichnet
bc
x
(oor x, ganzzahliger Anteil von x) die gröÿte Zahl
aus
Z,
die kleiner oder gleich x ist.
Eine Zahl x mit Rest durch eine Zahl y dividieren
heiÿt: Ermitteln, welches ganzzahlige Vielfache von y
in x enthalten ist. Den verbleibenden Rest nennt man
x
mod
y :
Denition 6. [modulo]
x
Im Fall y
=0
mod
y
=
Für x; y
x
y
legt man fest:
b
b
x=y
x=y
2Z
c
ist
:
c=0
.
Beispiel 1.
b5 3c = 2
( 3) b5 ( 3)c = 1
5
3 b 5 3c = 1
( 3) b 5 ( 3)c =
5 mod 3 = 5
5 mod
3=5
5 mod 3 =
5 mod
3=
5
3
=
;
=
;
=
=
;
2:
3
M. Gruber, SS 2009
Diskrete Mathematik
Klassischer euklidischer
Algorithmus
Den gröÿten gemeinsamen Teiler
Zahlen m; n
2Z
0
mit
ggT(m; n)
zweier
m < n kann man nach
Euklid rekursiv berechnen durch
ggT(0; n)
=
n
ggT(m; n)
=
ggT(n mod
(1)
m; m); m >
0:(2)
(1) und (2) beschreiben zusammen einen Rekursionsalgorithmus. (2) stellt gleichzeitig eine Behauptung dar.
1. Die Rekursion muss nach endlich vielen Schritten enden,
nämlich dann, wenn sich für n
mod
m Null ergibt.
2. Die Behauptung, die in (2) steckt, ist wahr, da jeder gemeinsame Teiler von m und n auch gemeinsamer Teiler von
n
mod =
m
n
m
b
c und
n=m
Beispiel 2.
ggT(54; 87)
ggT(21; 33)
=
m ist und umgekehrt.
=
ggT(12; 21)
ggT(33; 54)
=
ggT(9; 12)
=
=
ggT(3; 9) = ggT(0; 3) = 3.
4
M. Gruber, SS 2009
Diskrete Mathematik
Erweiterter euklidischer
Algorithmus
Der
ggT(x1 ; x0 ) (0
1 < x0) wird berechnet durch
x
die Rekursion
+1 = xi 1
xi
+1
die mit xn
Mit qi
2
3
6 x
i
6
6
6
4
7
7
7
7
5
+1
xi
Aus
=
= 0
b
xi
6x
6 i
Qi 6
6
4
xi
2
3
2
6 x
n
6
6
6
4
7
7
7
7
5
6a
6
6
6
4
+1
xn
=
b
3
7
5
6 x
n
6
6
6
4
7
7
7
7
5
und
+1
xn
(3)
6= 0
xn
3
1
1
2
32
qi
7
7
7
7
5
endet.
gilt
2
=
Qn Qn
|
1 {z
=: a b
3
0777
1 75
x1
6x
6
Q 6
6
}4
3
07
7 folgt die Darstellung
5
x1
6
7
b7
7 6x 7
76
76
54
ggT(x1 ; x0 ) =
60
6
6
6
4
3
1777
1=xic ;
xi
ggT(x12; x0 ) =
und
1=xic und Qi =
2
=
xi
xn
=
0 + bx1
ax
(a; b
2 Z)
: (4)
5
:
M. Gruber, SS 2009
Diskrete Mathematik
Beispiel 3.
Mit den Zahlen von Beispiel 2 gilt
3
2
6777
7
5
x7
6x
6
6
6
4
2
=
32
60
6
6
6
4
1
1
7
7
7
7
5
3
60
6
6
6
4
1
2
=
6
6
6
6
4
1
3
7
7
7
7
5
6877
6
7
6
7
6
7
4
5
1
32
5
52
3
54
3
877 668777
18
29
76
76
54
7
7
5
54
2 3
=
637
6 7
6 7
6 7
4 5
0
und damit
ggT(54; 87) = 5 87 + (
8) 54 = 3 :
Aus dieser Beziehung kann man z.B. ablesen, dass
(
8) 54 mod 87 = 79 54 mod 87 = 3
ist.
6
M. Gruber, SS 2009
Diskrete Mathematik
Ezienz des euklidischen
Algorithmus
Benachbarte Fibonacci-Zahlen sind teilerfremd. Dies sieht man,
wenn man die rekursive Berechnung der Fibonacci-Zahl Fn
+1
aufrollt und die entstehenden Gleichungen als euklidische Divisionen interpretiert:
Fn
F
c Fn + Fn+1 mod Fn
+1 = 1 Fn + Fn 1 = b nF+1
n
=1
Fn
Fn
1 + Fn 2 = b Fnn 1 c Fn 1 + Fn mod Fn 1
F
..
.
F
Diese
Fn
F
2 = 1 F1 + F0 = b F12 c F1 + F2 mod F1
Gleichungen
+1; Fn
zeigen
noch
etwas:
Die
Fibonacci-Zahlen
sind die kleinsten Eingabedaten des euklidischen Al-
gorithmus, die zu n Divisionen mit Rest führen. d.h. sind zur
1
Berechnung des ggT zweier beliebiger Zahlen x
0 Fn+1.
< x
0
mindes-
tens n Schritte erforderlich, so ist x
Es lässt sich daraus herleiten, dass die Anzahl benötigter Divisionen mit Rest beim euklidischen Algorithmus höchstens linear mit
der Stellenzahl der Eingabedaten wächst.
7
M. Gruber, SS 2009
Diskrete Mathematik
Literatur
[CM] Ronald L. Graham, Donald E. Knuth and Oren Patashnik,
Concrete Mathematics: A Foundation for Computer Science.
Addison-Wesley, 1989; second edition, 1994.
http://www-cs-faculty.stanford.edu/~knuth/gkp.
html
8
Herunterladen