Einzelnen Beitrag anzeigen

CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Euklidscher Algorithmus

  Alt 13. Mär 2007, 16:19
Von Cöster kommt der Hinweis, dass obige Funktion Probleme mit zwei Sonderfällen hat:
Zitat von Cöster:
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).
Als korrigierte Version, schlägt er folgende vor:
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 := A;
end;
Darüberhinaus schlägt marabu noch eine weitere, rekursive Variante vor:
Delphi-Quellcode:
function Gcd(n, m: Int64): Int64;
begin
  if m = 0 then Result := n
  else Result := Gcd(m, n mod m);
end;
»Mein Kaffee ist so schwarz — der fängt gleich an zu rappen...«
  Mit Zitat antworten Zitat