Einzelnen Beitrag anzeigen

gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#51

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung

  Alt 21. Nov 2010, 19:49
Ich hoffe der Lösungsweg ist einigermaßen verständlich.
Mag ja sein, aber leider ist er ziemlich falsch. Deine Funktion bietet noch nicht einmal die Symmetrie ggt(a,b)=ggt(b,a), wie man leicht an ggt(2,-2) = 0 und ggt(-2,2) = 2 sieht. Außerdem werden leider wieder einmal völlig falsche Werte für negative Zahlen geliefert, einerseits mit voller Absicht: ggt(a,b) = 0 für b <= 0! (Warum das ganze?). Andererseits (wohl) aus Unkenntnis der mod-Funktion: ggt(-5,2) = -1. Eine verbesserte Version könne so aussehen:
Delphi-Quellcode:
 function ggt(zahl1,zahl2: integer): integer;
var
  rest: integer;
begin
  zahl1 := abs(zahl1);
  zahl2 := abs(zahl2);
  while zahl2>0 do begin
    rest := zahl1 mod zahl2;
    zahl1 := zahl2;
    zahl2 := rest;
  end;
  ggt := zahl1;
end;