Der Euklidsche Algorithmus (ggT) Der grösste gemeinsame Teiler (ggT) von zwei natürlichen Zahlen a und b ist die grösste ganze Zahl, die sowohl a als auch b teilt. Beispiele: (a) ggT(21, 15) = 3 (b) ggT(39, 22) = 1 (c) ggT(16, 48) = 16 Wie kann diese Anforderung von einer Rechenmaschine gelöst werden? Duch die folgende Sequenz von Anweisungen: (0) Gib zwei natürliche Zahlen a und b ein. (1) Falls a = b: Wir sind fertig und geben ggT(a, b) = b aus. (2) Falls a < b: Vertausche die Werte von a und b. (3) Berechne a − b → a und gehe zu Schritt 1. Eine solche Formulierung wird Algorithmus genannt. Ein Algorithmus ist eine in der Beschreibung und Ausführung endliche und eindeutige Vorschrift zur Lösung eines Problems. Die Ausführung des Algorithmus anhand von Beispiel (a): (1) a = b? 21 = 15 ist falsch: weiter (2) a < b? 21 < 15 ist falsch: weiter (3) a − b → a: 21 − 15 = 6 → a 21 15 6 (1) a = b? 6 = 15 ist falsch: weiter (2) a < b? 6 < 15 ist wahr: a = 15 und b = 6 (3) a − b → a: 15 − 6 = 9 → a 15 6 9 (1) a = b? 9 = 6 ist falsch: weiter (2) a < b? 9 < 15 ist falsch: weiter 1 (3) a − b → a: 9−6→3 9 6 3 (1) a = b? 3 = 6 ist falsch: weiter (2) a < b? 3 < 6 ist wahr: a = 6 und b = 3 (3) a − b → a: 6−3→3 6 3 (1) a = b? 3 3 = 3 ist wahr: Ende! Output: 3 Der Algorithmus als Struktogramm: Der Algorithmus als Python-Programm: def ggt(a, b): while a != b: if a < b: (a, b) = (b, a) a = a - b return b print(ggt(21, 15)) 2