Einführung in die Computeralgebra - Übungsblatt 1 Wintersemester 2009/2010 Michael Stoll 26. Oktober 2009 (1) Ergänzen Sie im Pseudocode für die Addition zweier ganzer Zahlen den Teil für die Subtraktion. (2) Schreiben Sie ein Programm (Pseudocode) für die Schulmethode fürs Multiplizieren zweier ganzer Zahlen. Für die Multiplikation stellt der Prozessor einen Befehl entsprechend der Relation r+s·B =u·v zur Verfügung, wobei u und v die Eingabeworte und r und s die Ausgabeworte sind. (3) Prüfen Sie experimentell, ob MAGMA große ganze Zahlen (oder Polynome großen Grades über einem endlichen Körper) mittels eines Algorithmus quadratischer Komplexität multipliziert, etwa indem Sie die Befehle > N := 10^6; a := Random(2^(N-1), 2^N-1); time b := a*a; verwenden (für verschiedene Werte von N ). (4) Formulieren Sie die Schulmethode für die Division mit Rest (mit a ≥ 0 und b > 0) als Pseudocode für die von uns gewählte Darstellung ganzer Zahlen. Für die Division stellt der Prozessor einen Befehl entsprechend der Relation a0 + a1 B = qb + r , 0≤r<b zur Verfügung, wobei a0 , a1 , b (mit b > 0, a1 < b) die Eingabeworte und q, r die Ausgabeworte sind. (5) Analysieren Sie die Komplexität des folgenden binären Euklidischen Algorithmus (für a, b ≥ 0): function ggT(a, b) if a = 0 then return b end if s←1 while 2 | a do a ← a/2 if 2 | b then b ← b/2; s ← 2 · s end if end while while true do if b = 0 then return s · a end if while 2 | b do b ← b/2 end while (a, b) ← (b, |a − b|) end while end function