Schnelles modulares Potenzieren in Python
def modpowerr(b,e,m):
"""
Rückgabe (b**e)%m , e und m müssen natürliche Zahlen sein
"""
if e == 0:
return 1
else:
if e%2 == 1:
return (b*modpowerr((b*b)%m,e//2,m))%m
else:
return (modpowerr((b*b)%m,e//2,m))%m
def modpower(b,e,m):
"""
Rückgabe (b**e)%m , e und m müssen natürliche Zahlen sein
"""
res = 1
while e > 0:
if e%2 == 1:
res = (res*b)%m
b = (b*b)%m
e = e//2
return res
Diskrete Exponentialfunktion in Delphi
function modpot(a,e,m : int64) : int64;
var
quad, halb, erg : int64;
begin
quad := a; halb := e; erg := 1;
while halb > 0 do
begin
if odd(halb) {halb mod 2 > 0} then
erg := (erg*quad) mod m;
quad := (quad*quad) mod m;
halb := halb div 2;
end;
result := erg;
end;
modpotenz.zip
modpot_lang.zip
ModPot_lang.exe
Links