Zitat von
himitsu:
- Das Funktionsergebnis über Result, statt Funktionsnamen
(leichter zu erkennen, ob Funktionsaufruf oder Ergebniszuweisung)
Ist aber nicht portabel!
Außerdem könnte man es dann doch gleich durchsichtiger machen (hab's anders genannt, damit keine Verwirrung entsteht):
Delphi-Quellcode:
function mod_inv1(A,B:longint):longint;
{-liefert 1/A mod B, 0 wenn nicht invertierbar d.h. ggt(A,B) <> 1}
var
n1,n2,b1,b2,q,t:longint;
begin
n1 := B;
n2 := A;
b1 := 0;
b2 := 1;
while n2<>0 do begin
q := n1 div n2;
t := n2;
n2 := n1 - q*n2;
n1 := t;
t := b2;
b2 := b1 - q*b2;
b1 := t;
end;
if n1<>1 then mod_inv1 := 0
else if b1<0 then mod_inv1 := b1+B
else mod_inv1 := b1;
end;