Hi!
Ich hab mir heute den
Code-Library-Eintrag zum Euklidschen Algorithmus angesehen. Die dort gepostete Implementierung berücksichtigt einige Sonderfälle nicht:
b=0 würde wegen Division durch 0 zu einem Fehler führen.
Für b=1 würde die Funktion a als Ergebnis liefern (statt 1).
ggT(0,b) ist als |b| definiert, gäbe aber 0 zurück.
Folgende Implementierung berücksichtigt diese Fälle und ist außerdem schneller:
Delphi-Quellcode:
function ggT(A, B: Integer): Cardinal;
var
Rest: Integer;
begin
while B <> 0 do
begin
Rest := A mod B;
A := B;
B := Rest;
end;
Result := Abs(A);
end;