Aufgabe:
A) additiver Euklidischer Algorithmus
(1) wenn a= 0: Ergebnis b
(2) (es ist nun a>0)
wenn b >0
(2a) wenn a>b: setze a:= a - b
(2b) sonst ( b>=a): setze b:= b - a
(2c) wiederhole ab (2)
(3) (es ist nun b= 0)
Ergebnis ist a
Hinweis: Falls Sie sich wundern, dass nur einmal geprüft wird, ob a=0: Dies ligt daran, dass durch die darauf folgenden Schritte ein positives a stets positiv bleibt.
b) multiplikativer Euklidischer Algorithmus:
(1) wenn b> 0
(1a) setze t:= a mod b (t ist eine temporäre Variable)
(1b) setze a:= b
(1b) setze b:= t
(1c) wiederhole ab (1)
(2) (es ist nun b = 0)
Ergebnis ist a
Nun die eigentliche Aufgabenstellung: Schreiben Sie eine Klasse Mathe mit folgenden Methoden, die jeweils zwei nichtnegative(wovon Sie ausgehen kölnnen) ganze Zahlen a und b als Parameter haben:
a) ggtAdd führt den additiven Euklidischen Algorithmus iterativ durch und gibt ggT(a,b) zurück.
b) ggTMul führt den multiplikativen Euklidischen Algorithmus iterativ durch und gibt ggT(a,b) zurück.
c) ggTAddOut führt den additiven Euklidischen Algorithmus durch. Zu Beginn jeder Widerholung der Schleife(also vor Schritt (2a)) werden die Werte von a und b, von einem Leerzeichen getrennt, auf einer Zeile auf dem Bildschirm ausgegeben. Ebenso werden diese beiden Werte zum Schluss ausgegegben, also vor Schritt (3) bzw. im Fall a= 0 in Schritt (1). Die Methode gibt als Ergebnis zurück, wie oft die Schleife durchlaufen würde.
Hinweis: Sie müssen also eine zusätzliche Variable einführen, die die Wiederholung mitzählt.
Beispiel: Der Aufruf on ggzAddOut(24,78) produziert auf dem Bildschirm die Ausgabe
24 78
24 54
24 30
24 6
18 6
12 6
6 6
6 0
d) ggTMulOut führt analog zu ggTAddOut den multiplikativen Euklidischen Algorithmus iterativ durch, und gibt jeweils vor den Schritten (1a) und (2) die Zwischenwerte auf dem Bildschirm aus und liefert als Ergebnis die Zahl der Wiederholungen des Verfahrens.
e) ggT ruft ggTMul mit den Werten |a| und |b| auf und gibt das Ergebnis dieses Aufrufs zurück.
Was fällt Ihnen im Vergleich der Ausgaben der beiden Verfahren auf?