Einzelnen Beitrag anzeigen

gammatester

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

Re: Exponentieren und dann Modulo: große Zahlen

  Alt 16. Mai 2008, 18:24
Zitat von tuxianer:
Hallo,
ich habe jetzt den Code implementiert:

Delphi-Quellcode:
function tform1.mod_exp(basis,exponent,modulo:integer):int64;
var e:Integer;
begin
  e:=1;
  while (exponent>0) do begin
    if (exponent mod 2 > 0) then e:=(e*basis) mod modulo;
    basis:=(basis*basis) mod modulo;
    exponent:=exponent div 2;
  end;
  result:=e;
end;
Bei Größeren Zahlen kommt aber mist raus z.B.

666^58613 mod 81079=-38808

Rauskommen müsste aber: 49371.

Woran kann das liegen? Mit kleineren Zahlen gehts 1a!
Das liegt daran, daß 81079* 81079 = 6573804241 > 2^31 ist. Mach alle Variablen int64, dann geht's.

Gruß Gammateser
  Mit Zitat antworten Zitat