Mit der folgenden Funktion ist es möglich, einen Bruch mit Hilfe des ggT vollkommen zu kürzen:
Delphi-Quellcode:
type TBruch = record
zaehler,nenner :Integer;
end;
...
Function Kuerzen(zaehler,nenner:integer):Tbruch;
var
a,b,rest:Integer;
begin
If (zaehler = 0) or (nenner = 0) then exit;
////größere Zahl bestimmen///////////
If abs(Zaehler) < abs(Nenner) then
begin
a := Zaehler;
b := Nenner;
end else
begin
b := Zaehler;
a := Nenner;
end;
///////////ggT//////////////
rest:= a mod b;
while rest<>0 do
begin
rest:=a mod b;
a:=b;
b:=rest;
end;
//////Ergebnis ausgeben//////
Result.zaehler := Round(Zaehler / a);
Result.nenner := Round(Nenner / a);
end;