Sie sind auf Seite 1von 2

Otto-von-Guericke-Universitat Magdeburg 07.12.

2016
Institut fur Analysis und Numerik
Prof. Dr. T. Richter, Dipl.-Math. K. Simon

Algorithmische Mathematik I (WS 2016/17)


Ubungsblatt 9
abzugeben: Aufgaben 3(b) und 5 am 04.01.2017 vor der Vorlesung

1. Beweisen Sie folgende Aussagen fur einen beliebigen Modul m N :


a) Z = m1
S
k=0 k := 0 1 m 1,

b) k ` = 0 k < ` m 1.

2. Entwickeln Sie fur naturliche Zahlen z N mit der Dezimaldarstellung


n
X
z = (an . . . a1 a0 )10 = a0 + ak 10k
k=1
einen einfachen Formelausdruck F (a0 , . . . , an ) aus den Ziffern von z fur die Bestimmung
des Restes bei der Division von z durch 8, so dass also gilt
z F (a0 , . . . , an ) mod 8 z N.

3. Beweisen Sie,
a) dass das Produkt
z = a(a + 1)(a + 2)(a + 3)
fur jede beliebige naturliche Zahl a N durch 12 teilbar ist.
Hinweis: Analysieren Sie die Restklasse jedes Faktors im Produkt modulo geeigneter Primzah-
len.
b) (5 Punkte) dass das Produkt
z = (a + 24)(a + 1)(a + 2)(a + 2016)(a 312 )(a 12)(a + 20)(a + 162 )
fur jede beliebige naturliche Zahl a N durch 1260 teilbar ist.
c) Wie gro muss n mindestens sein, damit das Produkt
z = (a + c1 ) . . . (a + cn )
mit gegebenen festen ci , i = 1, . . . , n fur beliebiges a N durch pk teilbar ist, wobei p eine
Primzahl und k N ist. Geben Sie eine Moglichkeit fur die c1 bis cn an.

4. Sei p N eine Primzahl. Ein Element a Z/pZ heit Primitivwurzel, falls gilt:
p1
[
ak = Z/pZ \ {0}.
k=0
Untersuchen Sie, ob und wann 0 bzw. 1 Primitivwurzel sind, und schreiben Sie un-
ter Verwendung der Programmiermaske primitiv wurzeln.c (siehe WebSeite fur die
Ubungen) ein naives Programm, dass alle Primitivwurzeln in Z/pZ bestimmt und ausgibt.

1
5. (5 Punkte) Erweitern Sie das Programm primitiv wurzeln.c, welches in den Ubun-
gen zu Aufgabe 4 erstellt wurde, um die folgende Funktionalitat. Nach der Ausgabe aller
Primitivwurzeln soll der Nutzer die Moglichkeit bekommen, eine dieser Primitivwurzeln
a Z/pZ auszuwahlen sowie ein beliebiges Element b Z/pZ \ {0} anzugeben (jeweils
uber die Werte der Reprasentanten a, b {0, 1, . . . , p 1}). Danach soll eine Funktion
get discrete log aufgerufen werden, die uber die Anweisung
k = get discrete log(a,b,p);
den sogenannten diskreten Logarithmus von b zur Basis a bestimmt, d.h. diejenige Zahl
k {0, 1, . . . , p 1}, fur die gilt
ak = b in Z/pZ.
Dabei sollen die Variablen k, a, b, p jeweils vom Typ unsigned long sein. Anschlie-
end soll im Hauptprogramm der Wert von k ausgegeben werden.