Falls du das auf einem kleinen Controller ohne Division in Hardware
realisieren willst, gibt's da noch eine einfachere Alternative: Du
nimmst den obigen Algo, verwendest allerdings anstatt der
Modulo-Division nur Subtraktionen. Da nimmt die Schrittzahl natürlich
zu, aber schneller als Divisionen in Software zu realisieren dürfte es
allemal sein.
Beispiel mit obigen Zahlen:
40 - 25 = 15
25 - 15 = 10
15 - 10 = 5
10 - 05 = 5
05 - 05 = 0 -> ggT(40, 25) = 5
oder
54 - 29 = 25
29 - 25 = 4
25 - 04 = 21
21 - 04 = 17
17 - 04 = 13
13 - 04 = 9
09 - 04 = 5
05 - 04 = 1
04 - 01 = 3
03 - 01 = 2
02 - 01 = 1
01 - 01 = 0 -> ggT(54, 29) = 1
Zum Vergleich:
54 % 29 = 25
29 % 25 = 4
25 % 04 = 1
04 % 01 = 0 -> ggT(54, 29) = 1
Bei der Methode mit der Subtraktion ist halt zu beachten, dass IMMER die
kleinere von der grösseren Zahl abgezogen wird.
EDIT: Hab' überlesen, dass du den mega32 verwenden willst. Meinen ersten
Satz oben bis zum Doppelpunkt kannste somit streichen, der mega32 ist
für mich so ein kleiner Controller ;)