Donnerstag 12.4.2012

Werbung
Mathematik für Informatiker B, SS 2012
Donnerstag 12.4
$Id: modul.tex,v 1.10 2012/04/12 12:24:19 hk Exp $
§1
Modulare Arithmetik
1.2
Euklidischer Algorithmus
Am Ende der letzten Sitzung hatten wir den größten gemeinsamen Teiler zweier ganzer
Zahlen a und b eingeführt, und auch bereits einige seiner Eigenschaften bewiesen. Im
folgenden werden wir zum einen die Existenz des größten gemeinsamen Teilers einsehen,
und zum anderen ein Verfahren zu seiner Berechnung angeben. Einen kleinen Sonderfall
muss man dabei allerdings ausnehmen. Ist a = b = 0, so ist überhaupt jedes c ∈ Z
ein gemeinsamer Teiler von a und b, und es kann keinen größten gemeinsamen Teiler
geben. Ist genau eine der beiden Zahlen a, b Null, etwa a 6= 0 und b = 0, so sind die
gemeinsamen Teiler von a und b genau die Teiler von a, und es folgt ggt(a, b) = |a|.
Hier gibt es also einen größten gemeinsamen Teiler, aber er ist uninteressant. Daher
werden wir uns bei der Berechnung des größten gemeinsamen Teilers auf den Hauptfall
a, b 6= 0 beschränken. Der euklidische Algorithmus kann verwendet werden, um den
größten gemeinsamen Teiler d = ggt(a, b) zweier ganzer Zahlen a, b ∈ Z∗ zu ermitteln.
Im Fall |a| = |b| ist b = ±a und dann ist ggt(a, b) = |a|. Wir können uns also auf den
Fall |a| =
6 |b| beschränken, und durch eventuelles Vertauschen von a und b können wir
weiter sogar |a| > |b| annehmen. Da Vorzeichen auf Teilbarkeit und damit auch auf
den größten gemeinsamen Teiler keinen Einfluss haben, kann man sich sogar auf den
Hauptfall a > b > 0 beschränken. Wir beginnen mit einem kleinen Beispiel und wollen
den größten gemeinsamen Teiler von 91 und 113 berechnen. Wir stützen uns dabei auf
Lemma 5.(d). Teilen wir die größere Zahl 113 mit Rest durch 91, so ist 113 = 91 + 22,
also 113 − 91 = 22 und das Lemma ergibt
ggt(113, 91) = ggt(113 − 91, 91) = ggt(22, 91) = ggt(91, 22).
Damit ist die Berechnung des größten gemeinsamen Teilers auf ein einfacheres Problem
reduziert. Wir können so fortfahren und auch 91 mit Rest durch 22 teilen, also 91 =
4 · 22 + 3 und somit
ggt(91, 22) = ggt(91 − 4 · 22, 22) = ggt(3, 22) = ggt(22, 3).
An dieser Stelle sehen wir natürlich schon direkt das der größte gemeinsame Teiler 1
ist, der Systematik halber wollen wir aber noch einmal 22 mit Rest durch 3 teilen, also
22 = 7 · 3 + 1 und erhalten diesmal
ggt(22, 3) = ggt(22 − 7 · 3, 3) = ggt(1, 3) = 3,
2-1
Mathematik für Informatiker B, SS 2012
Donnerstag 12.4
also insgesamt ggt(113, 91) = 1. Zusammengefasst haben wir die folgende Rechnung
durchgeführt:
113
91
22
3
=
=
=
=
91 · 1 + 22 =⇒ ggt(113, 91) = ggt(91, 22)
22 · 4 + 3 =⇒ ggt(91, 22) = ggt(22, 3)
3 · 7 + 1 =⇒ ggt(22, 3) = ggt(3, 1)
1·3
insgesamt ggt(91, 113) = 1.
Dieses Verfahren durch fortgesetzte Division mit Rest schließlich den größten gemeinsamen Teiler zu bestimmen, wird als der euklidische Algorithmus bezeichnet. Wir wollen
ihn einmal auch allgemein beschreiben. Gegeben seien also zwei Zahlen a, b ∈ Z∗ normiert auf |a| > |b|. Dann teilen wir die größere Zahl a mit Rest durch b, schreiben
also
a = bq0 + r0 , 0 ≤ r0 < |b|
wobei q0 ∈ Z den Quotienten und r0 ∈ N den Rest bezeichnet. Ist r0 = 0, also b|a,
so ist nach Lemma 5.(a) sofort ggt(a, b) = |b|, und wir sind bereits fertig. Andernfalls
dividieren wir b mit Rest durch r0 , also
b = r 0 q1 + r 1 , 0 ≤ r 1 < r 0 .
Ist nun r1 = 0, so hören wir auf, andernfals dividieren wir r0 mit Rest durch r1
r 0 = r 1 q2 + r 2 , 0 ≤ r 2 < r 1 ,
dann r1 mit Rest durch r2 und immer so weiter, bis irgendwann der Rest 0 auftaucht,
sagen wir nach n + 2 Schritten
rn−2 = rn−1 qn + rn , 0 ≤ rn+1 < rn−1 ,
rn−1 = rn qn+1 .
Da der Rest in jedem Schritt echt kleiner wird, müssen wir irgendwann einmal an diese
Stelle kommen. Der größte gemeinsame Teiler von a und b ist dann der letzte von Null
verschiede Rest
rn = ggt(a, b).
Diese Aussage folgt wie im Beispiel durch fortgesetzte Anwendung von Lemma 5.(b).
Man arbeitet sich von unten nach oben durch den euklidischen Algorithmus. In der
Abbruchzeile hatten wir rn−1 = rn qn+1 , und somit besagt Lemma 5.(a) auch
ggt(rn , rn−1 ) = ggt(rn , rn qn+1 ) = rn .
Angenommen wir wissen bereits rn = ggt(ri , ri−1 ) für ein 1 < i ≤ n, für i = n ist dies
beispielsweise der Fall. Die (i + 1)-te Zeile des euklidischen Algorithmus ist dann
ri−2 = ri−1 qi + ri
2-2
Mathematik für Informatiker B, SS 2012
Donnerstag 12.4
beziehungsweise ri = ri−2 − ri−1 qi und Lemma 5.(b) ergibt
rn = ggt(ri , ri−1 ) = ggt(ri−2 − ri−1 qi , ri−1 ) = ggt(ri−2 , ri−1 ) = ggt(ri−1 , ri−2 ).
Für wir also eine rückwärts laufende Induktion von i = n bis nach i = 1 durch, so
ergibt sich mit i = 1 schließlich
rn = ggt(r1 , r0 ).
Wenden wir jetzt noch zweimal Lemma 5.(b) an, so ist letztlich
rn = ggt(r1 , r0 ) = ggt(b − r0 q1 , r0 ) = ggt(r0 , b) = ggt(a − bq0 , b) = ggt(a, b).
Damit ist bewiesen das der letzte von Null verschiedene Rest rn im euklidischen Algorithmus der größte gemeinsame Teiler von a und b ist, und insbesondere ist damit
die Existenz von ggt(a, b) eingesehen. Wir wollen noch ein zweites Beispiel zum euklidischen Algorithmus rechnen und zwar ggt(91, 133).
133 = 91 · 1 + 42
91 = 42 · 2 + 7
42 = 7 · 6
=⇒ ggt(91, 133) = 7.
Wir fassen nun die bisherigen Ergebnisse über den größten gemeinsamen Teiler in einem
Satz zusammen. Bei der Gelegenheit können wir dem eukldischen Algorithmus noch
eine zusätzliche Tatsache entnehmen, der größte gemeinsame Teiler läßt sich immer als
eine ganzzahlige Kombination von a und b schreiben. Dies wird manchmal auch als die
Wechselsummendarstellung des größten gemeinsamen Teilers bezeichnet.
Satz 1.6 (Wechselsummendarstellung des größten gemeinsamen Teilers)
Zu zwei ganzen Zahlen a, b ∈ Z, a, b 6= 0, gibt es genau einen größten gemeinsamen
Teiler d = ggt(a, b). Ferner existieren α, β ∈ Z mit d = αa + βb.
Beweis: Die Eindeutigkeit von ggt(a, b) haben wir mit Lemma 4 gezeigt. Die Existenz
des größten gemeinsamen Teilers ergab sich aus dem euklidischen Algorithmus
a = bq0 + r0 , 0 ≤ r0 < |b|,
b = r 0 q1 + r 1 , 0 ≤ r 1 < r 0 ,
r 0 = r 1 q2 + r 2 , 0 ≤ r 2 < r 1 ,
..
..
.
.
rn−2 = rn−1 qn + rn , 0 ≤ rn < rn−1 ,
rn−1 = rn qn
als d = ggt(a, b) = rn , wobei wir uns bereits stillschweigend auf den Fall |a| > |b| normiert haben. Es ist nur noch die Darstellung von d = rn als ganzzahlige Kombination
2-3
Mathematik für Informatiker B, SS 2012
Donnerstag 12.4
von a und b einzusehen, und hierzu werden wir induktiv die stärkere Aussage zeigen,
dass es für alle 0 ≤ i ≤ n stets αi , βi ∈ Z mit ri = αi a + βi b gibt. Für i = 0 müssen wir
dabei wegen
r0 = a − q0 b nur α0 = 1, β0 = −q0
setzen. Für i = 1 ist
r1 = b − q1 r0 = b − q1 (α0 a + β0 b) = −q1 α0 a + (1 − q1 β0 )b,
wir können also α1 = −q1 α0 und β1 = 1 − q1 β0 verwenden. Ist weiter 1 < i ≤ n und
haben wir die verlangte Darstellung von rj für 0 ≤ j < i bereits gefunden, so ergibt
sich auch
ri = ri−2 −qi ri−1 = αi−2 a+βi−2 b−qi (αi−1 a+βi−1 b) = (αi−2 −qi αi−1 )a+(βi−2 −qi βi−1 )b,
wir setzen also αi := αi−2 − qi αi−1 und βi := βi−2 − qi βi−1 . Per Induktion haben wir
dann ri = αi a + βi b für überhaupt alle 0 ≤ i ≤ n, und speziell für i = n ergibt sich
d = rn = αn a + βn b.
Das im Beweis verwendete Verfahren liefert uns auch eine Methode die Zahlen α, β
auszurechnen, wir müssen nur die Rechnung im euklidischen Algorithmus verfolgen,
und in jedem Schritt den aktuellen Rest ri als Kombination von a und b schreiben. Wir
wollen dies einmal am Beispiel von ggt(91, 133) = 7 durchführen.
133 = 91 · 1 + 42, 42 = 133 − 91,
91 = 42 · 2 + 7,
7 = 91 − 2 · 42 = 91 − 2 · (133 − 91) = 3 · 91 − 2 · 133,
und wir haben die Wechselsummendarstellung gefunden. Zum Abschluß wollen wir noch
zwei kleine Folgerungen aus der Wechselsummendarstellung des größten gemeinsamen
Teilers festhalten. Seien hierzu a, b ∈ Z∗ gegeben. Wir nennen a und b teilerfremd wenn
ggt(a, b) = 1 ist, und es ergibt sich die folgende Kennzeichung der Teilerfremdheit über
die Wechselsummen:
a und b sind teilerfremd ⇐⇒ Es gibt n, m ∈ Z mit na + mb = 1.
In der Tat, gibt es n, m ∈ Z mit na + mb = 1, so gilt für jeden gemeinsamen Teiler
c von a und b auch c|na + mb = 1, also muss c = 1 oder c = −1 sein. Also haben a
und b nur die beiden gemeinsamen Teiler ±1 und somit ist ggt(a, b) = 1. Nehmen wir
umgekehrt ggt(a, b) = 1 an, so liefert uns die Wechselsummendarstellung des größten
gemeinsamen Teilers Satz 6 auch n, m ∈ Z mit na + mb = ggt(a, b) = 1.
Die zweite Folgerung aus der Wechselsummendarstellung ist etwas komplizierter.
Nehmen an wir haben drei Zahlen a, b, c ∈ Z, sagen wir mit a, b 6= 0. Dabei seien a und
b teilerfremd und es gelte a|c und b|c. Wir behaupten das dann auch ab|c gilt, also
∀(a, b ∈ Z∗ , c ∈ Z) : ggt(a, b) = 1 ∧ a|c ∧ b|c =⇒ ab|c.
2-4
Mathematik für Informatiker B, SS 2012
Donnerstag 12.4
Da nämlich a und b teilerfremd sind gibt es n, m ∈ Z mit na + mb = 1. Wegen a|c und
b|c gibt es weiter auch ganze Zahlen p, q ∈ Z mit c = pa = qb. Damit folgt
c = 1 · c = (na + mb) · c = nac + mbc = nqab + mpab = (nq + mp) · ab,
und wir haben auch ab|c wie behauptet.
1.3
Restklassen
Nachdem uns nun der Teilbarkeitsbegriff zur Verfügung steht, können wir auch den
Kongruenzbegriff modulo einer Zahl m einführen.
Definition 1.7: Sei m ∈ N∗ . Zwei ganze Zahlen heißen kongruent modulo m, wenn
m|a − b gilt. In diesem Fall schreibt man
a ≡ b mod m.
In der Literatur findet man auch diverse alternative Schreibweise für die Kongruenz
modulo m, zum Beispiel
a ≡ b (m) oder a ≡ b.
m
Die Kongruenz von a und b modulo m bedeutet das sich a von b nur durch ein Vielfaches
von m unterscheidet, denn m|a − b besagt die Existenz eines q ∈ Z mit a − b = qm,
und dies ist zu a = b + qm gleichwertig. Nun gilt
Lemma 1.8: Sei m ∈ N∗ . Dann ist die Relation Kongruenz modulo m“ eine Äquiva”
lenzrelation auf Z.
Der Beweis dieser Tatsache ist eine Übungsaufgabe. Wie Sie noch aus dem letzten
Semester wissen, kann man bei gegebener Äquivalenzrelation die zueinander äquivalenten Elemente zu Äquivalenzklassen zusammenfassen. In Fall der Kongruenz modulo
m als Äquivalenzrelation bezeichnet man diese Äquivalenzklassen als Restklassen oder
Kongruenzklassen modulo m. Ist a ∈ Z, so schreiben wir [a], oder manchmal auch [a]m
wenn wir die Zahl m hervorheben wollen, für die a enthaltende Restklasse, also konkret
[a] = {b ∈ Z|a ≡ b mod m} = {a + qm|q ∈ Z}.
Die Menge aller Kongruenzklassen modulo m wird mit dem Symbol
Zm := {[a]m |a ∈ Z}
bezeichnet. Die Grundeigenschaften dieser Restklassen werden im folgenden Lemma
beschrieben:
Lemma 1.9: Für a, b ∈ Z und m ∈ N∗ sind äquivalent:
(a) Es ist a ≡ b mod m.
2-5
Mathematik für Informatiker B, SS 2012
Donnerstag 12.4
(b) Die Zahlen a und b liefern bei Division durch m denselben Rest.
(c) Für die Restklassen modulo m gilt [a] = [b].
Beweis: Die Äquivalenz der Aussagen (a) und (c) ist klar, da die Restklassen ja definitionsgemäß die Äquivalenzklassen der Kongruenz modulo m sind. Es verbleibt auch
die Äquivalenz von (a) und (b) einzusehen.
(a)=⇒(b). Da a modulo m zu b kongruent ist, existiert ein p ∈ Z mit a = b + pm.
Dividiere nun b mit Rest durch m, d.h. schreibe b = qm + r mit q ∈ Z und dem Rest
r ∈ Z mit 0 ≤ r < m. Dann ist auch
a = b + pm = qm + r + pm = (p + q)m + r,
d.h. r ist auch der Rest bei Division von a durch m.
(b)=⇒(a). Sei r der gemeinsame Rest bei Division von a und b durch m. Dann existieren p, q ∈ Z mit
a = pm + r
=⇒ a − b = pm + r − qm − r = (p − q)m,
b = qm + r
und dies bedeutet m|a − b. Damit sind a und b kongruent modulo m.
In anderen Worten entsprechen die Restklassen modulo m, d.h. die Äquivalenzklassen
der Kongruenz modulo m, genau den möglichen Resten bei Division durch m, also
den Zahlen 0, 1, 2, . . . , m − 1. Folglich gibt es genau m Restklassen modulo m, nämlich
[0], [1], . . . , [m − 1]. Nehmen wir beispielsweise konkret m = 2, so sind die beiden
Kongruenzklassen modulo 2 die Menge der geraden und die Menge der ungeraden
Zahlen.
1.3.1
Operationen auf den Restklassen
Wir wollen jetzt eine Addition und eine Multiplikation auf den Restklassen modulo
einer Zahl m einführen. Dies geschieht indem zu zwei gegebenen Restklassen [a], [b]
(a, b ∈ Z) Summe und Produkt einfach als die Restklassen von Summe und Produkt
der beiden Zahlen a und b eingeführt werden. Wir müssen uns allerdings davon überzeugen, dass dies überhaupt eine sinnvolle Definition ist. Die Repräsentanten a, b unserer
Restklassen sind ja bei weitem nicht eindeutig festgelegt, anstellen von a, b hätten wir
auch irgendwelche anderen Repräsentanten a0 , b0 nehmen können, und kriegen dann
in der Regel auch andere Summen und Produkte a0 + b0 und a0 · b0 . Glücklicherweise
ist dies nicht weiter tragisch, auch wenn die Zahlen a0 + b0 , a0 b0 verschieden von a + b
beziehungsweise ab sind, so werden wir sehen, dass sie doch dieselben Restklassen modulo m definieren. Man spricht auch davon, dass unsere Definition der Summe und des
Produktes von Restklassen wohldefiniert ist.
2-6
Mathematik für Informatiker B, SS 2012
Donnerstag 12.4
Lemma 1.10 (Addition und Multiplikation von Restklassen)
Sei m ∈ N∗ . Die Operationen ⊕ und auf der Menge der Restklassen modulo m,
definiert durch
[a] ⊕ [b] := [a + b],
[a] [b] := [a · b]
für a, b ∈ Z, sind wohldefiniert.
Beweis: Seien a, b, a0 , b0 ∈ Z mit [a] = [a0 ] und [b] = [b0 ]. Dann gelten a ≡ a0 mod m
und b ≡ b0 mod m, und dies bedeutet m|a − a0 und m|b − b0 . Es folgen
m|(a − a0 ) + (b − b0 ) = (a + b) − (a0 + b0 )
und
m|(a − a0 )b + a0 (b − b0 ) = ab − a0 b + a0 b − a0 b0 = ab − a0 b0 ,
und dies bedeutet a + b ≡ a0 + b0 mod m und ab ≡ a0 b0 mod m. Damit ist tatsächlich
[a + b] = [a0 + b0 ] und [ab] = [a0 b0 ].
Diese Operationen auf den Restklassen erlauben es uns in Zukunft einfach mit den
Repräsentanten zu rechnen. Wir hatten bereits bemerkt das die verschiedenen Restklassen gerade den den möglichen Resten 0, 1, 2, . . . , m − 1 entsprechen, wir können
also neue Operationen auf den Zahlen 0, 1, . . . , m − 1 folgendermassen definieren:
a ⊕ b = (a + b) mod m,
a b = (ab) mod m.
Man spricht dann oft auch einfach von Modulo-Rechnen“. Wir wollen jetzt einige
”
Beispiele besprechen.
1. Ist etwa m = 13, so sind 7 ⊕ 9 = 3 und 7 9 = 11.
2. Wir betrachten die Addition von vorzeichenlosen, 8-Bit langen Binärzahlen, zum
Beispiel
Binär
Dezimal
1 0 0 1 1 0 0 1 + 1 1 0 0 0 0 1 1
153
= 0 1 0 1 1 1 0 0
= 92,
+
= 348.
195
Hier ist 348 = 92 + 256, die Addition der Binärzahlen erfolgt in diesem Beispiel
also modulo 256 = 28 . Dies ist tatsächlich immer so, das Rechnen mit 8-Bit Zahlen
ist gerade das Rechnen modulo 28 = 256. Entsprechend bedeutet Rechnen mit
16-Bit Zahlen dann modulo 216 = 65536, und entsprechend für 32-Bit und 64-Bit
Zahlen.
2-7
Mathematik für Informatiker B, SS 2012
Donnerstag 12.4
3. Auch das Rechnen modulo kleinerer Zweierpotenzen läßt sich leicht durchführen.
Als ein Beispiel nehmen wir das Rechnen modulo 8 = 23 . Eine 8-Bit Binärzahl
a7 . . . a0 ist gleich a0 + 2a1 + 4a2 + 23 a3 + · · · + 27 a7 , d.h. die hinteren Summanden zu a3 , . . . , a7 sind alle durch 8 teilbar. Modulo 8 ist unsere Zahl also gleich
00000a2 a1 a0 . Die Restklasse modulo 8 ist also durch die hinteren drei Bits gegeben, und kann beispielsweise durch bitweises und“ mit 00000111 = 7 berechnet
”
werden, also r = n&7 in C. Entsprechendes gilt für höhere Zweierpotenzen und
16,32 und 64-Bit Zahlen.
4. Als ein weiteres Beispiel wollen wir die Ihnen schon aus der Schule bekannte Regel
zur Teilbarkeit durch 3 diskutieren. Diese Regel besagt das eine natürliche Zahl
genau dann durch Drei teilbar ist, wenn ihre Quersumme durch Drei teilbar ist.
Ist n ∈ N∗ im Dezimalsystem als n = ar ar−1 . . . a1 a0 geschrieben, so ist explizit
n = a0 + 10 · a1 + 102 · a2 + · · · + 10r · ar .
Modulo 3 ist jetzt 10 ≡ 1 mod 3, also [10] = [1]. Damit ist
[n] = a0 + 10 · a1 + 102 · a2 + · · · + 10r · ar
= [a0 ] ⊕ [10] [a1 ] ⊕ [10]2 [a2 ] ⊕ · · · ⊕ [ar ] [10]r
= [a0 ] + [a1 ] + [a2 ] + · · · + [ar ] = [a0 + · · · + ar ],
und a0 + a1 + · · · + ar ist gerade die Summe der Dezimalziffern von n, also
die Quersumme von n, d.h. die Zahl n ist modulo 3 gleich ihrer Quersumme.
Insbesondere ist n genau dann durch 3 teilbar wenn die Quersumme dies ist.
Nehmen wir etwa konkret die Zahl
n = 17597032 mit Quersumme 1 + 3 + 7 + 9 + 5 + 7 + 2 = 34,
so sehen wir das 17597032 bei Division durch 3 den Rest 1 hat da 34 ≡ 1 mod 3
ist.
Da auch 10 ≡ 1 mod 9 gilt, ist n auch genau dann durch 9 teilbar wenn die
Quersumme dies ist. Im Zahlenbeispiel hat n = 17597032 bei Division durch 9
den Rest 7 da 34 ≡ 7 mod 9 ist.
5. Mit der Überlegung des vorigen Beispiels läßt sich auch schnell eine Bedingung
für die Teilbarkeit durch 11 herleiten. Modulo 11 ist 10 ≡ −1 mod 11, also ist
analog zur obigen Rechnung für eine Dezimalzahl n = ar . . . a0 auch
n ≡ a0 − a1 + a2 − · · · + (−1)r ar mod 11.
Auf der rechten Seite steht hier die sogenannte alternierende Quersumme, also
die mit wechselnden Vorzeichen gebildete Quersumme. Zum Beispiel ist für n =
17597032 die alternierende Quersumme 2 − 3 + 0 − 7 + 9 − 5 + 7 − 1 = 2,
also ist n nicht durch 11 teilbar und hat bei Division durch 11 den Rest 2. Als
Teilbarkeitsregel durch 11 ergibt sich also, dass eine Zahl genau dann durch 11
teilbar ist wenn ihre alternierende Quersumme durch 11 teilbar ist.
2-8
Herunterladen