![]() |
Exponentieren und dann Modulo: große Zahlen
Hallo,
ich habe jetzt den Code implementiert:
Delphi-Quellcode:
Bei Größeren Zahlen kommt aber mist raus z.B.
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; 666^58613 mod 81079=-38808 Rauskommen müsste aber: 49371. Woran kann das liegen? Mit kleineren Zahlen gehts 1a! |
Re: Exponentieren und dann Modulo: große Zahlen
Ich denke, 666^58613 sprengt sogar den Anwendungsbereich von Int64. Nimm einfach mal den Windows Rechner. Int64 hat 64 Bit, kommt also bis 2^64. Das kann der Rechner noch anzeigen. Bei deiner Rechnung kommt selbst der Windows-Rechner nicht mehr mit. Es gibt also einen Owerflow.
|
Re: Exponentieren und dann Modulo: große Zahlen
das hab ich mir auch schon überlegt. aber dann gibts ja keine größeren ganzzahl typen. Wie kann ich mir da selbst welche erstellen? Aber eigentlich exponentiert das doch schrittweise. das Ergebnis ist ja nicht groß.
|
Re: Exponentieren und dann Modulo: große Zahlen
Es gibt eine Unit mit dem Zahlentyp BigInt. Einfach mal danach suchen. Ob die allerdings mit solch großen Zahlen zurechtkommt, weiß ich nicht.
|
Re: Exponentieren und dann Modulo: große Zahlen
Ich nehm an du hast das mal per Hand ausgerechnet? Dann lass dir doch in jedem Schritt die Werte deiner Variablen ausgeben. Daraus kannst du ablesen, ob deine Funktion ein generelles Problem hat oder in einem der Schritte "kippt".
|
Re: Exponentieren und dann Modulo: große Zahlen
Zitat:
|
Re: Exponentieren und dann Modulo: große Zahlen
|
Re: Exponentieren und dann Modulo: große Zahlen
Zitat:
|
Re: Exponentieren und dann Modulo: große Zahlen
Zitat:
|
Re: Exponentieren und dann Modulo: große Zahlen
ist dir übrigens schon aufgefallen, daß e nur ein Integer ist, also ist Result (Result:=e) auch nur ein Integer :shock:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz