Algorithmische Mathematik I (WS 2016/17) ¨Ubungsblatt 9

Werbung
Otto-von-Guericke-Universität Magdeburg
Institut für Analysis und Numerik
Prof. Dr. T. Richter, Dipl.-Math. K. Simon
07.12.2016
Algorithmische Mathematik I (WS 2016/17)
Übungsblatt 9
abzugeben: Aufgaben 3(b) und 5 am 04.01.2017 vor der Vorlesung
1. Beweisen Sie folgende Aussagen für einen beliebigen Modul m ∈ N :
S
a) Z = m−1
k=0 k := 0 ∪ 1 ∪ · · · ∪ m − 1,
b) k ∩ ` = ∅
∀ 0 ≤ k < ` ≤ m − 1.
2. Entwickeln Sie für natürliche 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 für 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)
für jede beliebige natürliche Zahl a ∈ N durch 12 teilbar ist.
Hinweis: Analysieren Sie die Restklasse jedes Faktors im Produkt modulo geeigneter Primzahlen.
b) (5 Punkte) dass das Produkt
z = (a + 24)(a + 1)(a + 2)(a + 2016)(a − 312 )(a − 12)(a + 20)(a + 162 )
für jede beliebige natürliche 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 für beliebiges a ∈ N durch pk teilbar ist, wobei p eine
Primzahl und k ∈ N ist. Geben Sie eine Möglichkeit für die c1 bis cn an.
4. Sei p ∈ N eine Primzahl. Ein Element a ∈ Z/pZ heißt Primitivwurzel, falls gilt:
p−1
[
ak = Z/pZ \ {0}.
k=0
Untersuchen Sie, ob und wann 0 bzw. 1 Primitivwurzel sind, und schreiben Sie unter Verwendung der Programmiermaske ’primitiv wurzeln.c’ (siehe Web–Seite für die
Übungen) 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 Übungen zu Aufgabe 4 erstellt wurde, um die folgende Funktionalität. Nach der Ausgabe aller
Primitivwurzeln soll der Nutzer die Möglichkeit bekommen, eine dieser Primitivwurzeln
a ∈ Z/pZ auszuwählen sowie ein beliebiges Element b ∈ Z/pZ \ {0} anzugeben (jeweils
über die Werte der Repräsentanten a, b ∈ {0, 1, . . . , p − 1}). Danach soll eine Funktion
’get discrete log’ aufgerufen werden, die über 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}, für 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.
Herunterladen