![]() |
Re: Exponentieren und dann Modulo: große Zahlen
|
Re: Exponentieren und dann Modulo: große Zahlen
Zitat:
Wenn Ihr also schon nicht die DEC-Routine nehmen wollt, empfehle ich selbstverständlich meine ![]() ![]() Gruß Gammatester |
Re: Exponentieren und dann Modulo: große Zahlen
@gammatester:
ich meinte da ja auch das VLI :angel2: Division kann man über 'ne Umkerung des Multiplikation regeln ... mach ich nicht anders :stupid: (weils so schön einfach ist) Modulo über 'ne Division+Multiplication+Subtraktion Multiplicaion ist ja auch nur 'ne Mehrfache Addition im Grunde führe ich alles auf eine Addition zurück. abgesehn, daß VLI dank der dezimalen Operationen in einem dualen System wohl etwas langsamer sein dürfte. |
Re: Exponentieren und dann Modulo: große Zahlen
Zitat:
Zitat:
Gruß Gammatester |
Re: Exponentieren und dann Modulo: große Zahlen
ich habs jetzt in delphi2007 probiert:
Delphi-Quellcode:
[DCC Fehler] BigInt.pas(175): E2393 Ungültige Operatordeklaration
[DCC Fehler] BigInt.pas(175): E2029 Bezeichner erwartet, aber 'CONST' gefunden [DCC Fehler] BigInt.pas(175): E2086 Typ 'TBigInt' ist nicht vollständig definiert [DCC Fehler] BigInt.pas(175): E2086 Typ 'TBigInt' ist nicht vollständig definiert [DCC Fehler] BigInt.pas(177): E2029 ; erwartet, aber Bezeichner 'Operator' gefunden [DCC Fehler] BigInt.pas(177): E2029 Ausdruck erwartet, aber 'CONST' gefunden [DCC Fehler] BigInt.pas(177): E2086 Typ 'TBigInt' ist nicht vollständig definiert [DCC Fehler] BigInt.pas(177): E2029 '=' erwartet, aber ')' gefunden [DCC Fehler] BigInt.pas(178): E2029 ; erwartet, aber Bezeichner 'Operator' gefunden [DCC Fehler] BigInt.pas(178): E2029 Ausdruck erwartet, aber 'CONST' gefunden [DCC Fehler] BigInt.pas(178): E2004 Bezeichner redefiniert: 'Oper1' [DCC Fehler] BigInt.pas(178): E2004 Bezeichner redefiniert: 'Oper2' [DCC Fehler] BigInt.pas(178): E2086 Typ 'TBigInt' ist nicht vollständig definiert [DCC Fehler] BigInt.pas(179): E2029 ; erwartet, aber Bezeichner 'Private' gefunden [DCC Fehler] BigInt.pas(1334): E2393 Ungültige Operatordeklaration [DCC Fehler] BigInt.pas(1334): E2029 '=' erwartet, aber ')' gefunden [DCC Fehler] BigInt.pas(1335): E2029 Ausdruck erwartet, aber 'BEGIN' gefunden [DCC Fehler] BigInt.pas(1336): E2003 Undefinierter Bezeichner: 'Result' [DCC Fehler] BigInt.pas(1337): E2066 Operator oder Semikolon fehlt [DCC Fehler] BigInt.pas(1340): E2393 Ungültige Operatordeklaration [DCC Fehler] BigInt.pas(1340): E2029 '=' erwartet, aber ';' gefunden [DCC Fehler] BigInt.pas(1340): E2029 '=' erwartet, aber ')' gefunden [DCC Fehler] BigInt.pas(1341): E2066 Operator oder Semikolon fehlt [DCC Fehler] BigInt.pas(1342): E2003 Undefinierter Bezeichner: 'Result' [DCC Fehler] BigInt.pas(1343): E2066 Operator oder Semikolon fehlt [DCC Fehler] BigInt.pas(1346): E2393 Ungültige Operatordeklaration [DCC Fehler] BigInt.pas(1346): E2029 '=' erwartet, aber ';' gefunden [DCC Fehler] BigInt.pas(1346): E2029 '=' erwartet, aber ')' gefunden [DCC Fehler] BigInt.pas(1347): E2066 Operator oder Semikolon fehlt [DCC Fehler] BigInt.pas(1348): E2003 Undefinierter Bezeichner: 'Result' [DCC Fehler] BigInt.pas(1349): E2066 Operator oder Semikolon fehlt [DCC Fehler] BigInt.pas(2694): E2015 Operator ist auf diesen Operandentyp nicht anwendbar [DCC Fehler] BigInt.pas(2694): E2015 Operator ist auf diesen Operandentyp nicht anwendbar [DCC Fehler] Unit1.pas(7): F2063 Verwendete Unit 'BigInt.pas' kann nicht compiliert werden |
Re: Exponentieren und dann Modulo: große Zahlen
da es mit Zeile 175 anfängt
ersetzt mal den Namen BitwiseNot durch LogicalNot :gruebel: (Zeilen 175 und 1334) stimmt zwar von der Logik her nicht ganz, aber von der Funktion her sollte es damit auch gehn. (Delphi unterscheidet ja angeblich nicht zwischen binären und logischen Operatoren :? ) nja, und dann mal sehen welche der Folgefehler noch übrig bleiben :stupid: |
Re: Exponentieren und dann Modulo: große Zahlen
geht leider noch nicht:
Delphi-Quellcode:
[DCC Fehler] BigInt.pas(177): E2393 Ungültige Operatordeklaration
[DCC Fehler] BigInt.pas(177): E2029 Bezeichner erwartet, aber 'CONST' gefunden [DCC Fehler] BigInt.pas(177): E2086 Typ 'TBigInt' ist nicht vollständig definiert [DCC Fehler] BigInt.pas(177): E2029 '=' erwartet, aber ')' gefunden [DCC Fehler] BigInt.pas(178): E2029 ; erwartet, aber Bezeichner 'Operator' gefunden [DCC Fehler] BigInt.pas(178): E2029 Ausdruck erwartet, aber 'CONST' gefunden [DCC Fehler] BigInt.pas(178): E2004 Bezeichner redefiniert: 'Oper1' [DCC Fehler] BigInt.pas(178): E2004 Bezeichner redefiniert: 'Oper2' [DCC Fehler] BigInt.pas(178): E2086 Typ 'TBigInt' ist nicht vollständig definiert [DCC Fehler] BigInt.pas(179): E2029 ; erwartet, aber Bezeichner 'Private' gefunden [DCC Fehler] BigInt.pas(1340): E2393 Ungültige Operatordeklaration [DCC Fehler] BigInt.pas(1340): E2029 '=' erwartet, aber ';' gefunden [DCC Fehler] BigInt.pas(1340): E2029 '=' erwartet, aber ')' gefunden [DCC Fehler] BigInt.pas(1341): E2066 Operator oder Semikolon fehlt [DCC Fehler] BigInt.pas(1342): E2003 Undefinierter Bezeichner: 'Result' [DCC Fehler] BigInt.pas(1343): E2066 Operator oder Semikolon fehlt [DCC Fehler] BigInt.pas(1346): E2393 Ungültige Operatordeklaration [DCC Fehler] BigInt.pas(1346): E2029 '=' erwartet, aber ';' gefunden [DCC Fehler] BigInt.pas(1346): E2029 '=' erwartet, aber ')' gefunden [DCC Fehler] BigInt.pas(1347): E2066 Operator oder Semikolon fehlt [DCC Fehler] BigInt.pas(1348): E2003 Undefinierter Bezeichner: 'Result' [DCC Fehler] BigInt.pas(1349): E2066 Operator oder Semikolon fehlt [DCC Fehler] BigInt.pas(2694): E2015 Operator ist auf diesen Operandentyp nicht anwendbar [DCC Fehler] BigInt.pas(2694): E2015 Operator ist auf diesen Operandentyp nicht anwendbar [DCC Fehler] Unit1.pas(7): F2063 Verwendete Unit 'BigInt.pas' kann nicht compiliert werden |
Re: Exponentieren und dann Modulo: große Zahlen
Zitat:
Zitat:
(Deklaraion und Funktion müssen ja umbenannt werden) Zeile 177+178 = ShiftRight und ShiftLeft ich dachte zwar die haben es schon mit dem Updat behoben, aber vielleicht heißt das bei dir RightShift und LeftShift (umgekerte Reinfolge) ShiftRight > RightShift ShiftLeft > LeftShift |
Re: Exponentieren und dann Modulo: große Zahlen
ok es kommen jetztkeine fehler mehr nach all diesen Korrekturen! :dancer:
|
Re: Exponentieren und dann Modulo: große Zahlen
noch was:
Delphi-Quellcode:
Function tF_Haupt.mod_exp(Basis, Exponent, Modulo: TBigInt): TBigInt;
Begin Result := 1; While Exponent > 0 do Begin If Exponent.Data and $1 <> 0 Then Result := (Result * Basis) mod Modulo; Basis := (Basis * Basis) mod Modulo; Exponent := Exponent div 2; End; End;
Delphi-Quellcode:
Diese jedoch geht:
[DCC Fehler] Unit1.pas(176): E2015 Operator ist auf diesen Operandentyp nicht anwendbar
[DCC Warnung] Unit1.pas(176): W1023 Vorzeichenbehaftete und -lose Typen werden verglichen - beide Operanden werden erweitert
Delphi-Quellcode:
meine mit Bigint geht auch:
Function tF_Haupt.mod_exp(Basis, Exponent, Modulo: TBigInt): TBigInt;
Begin Result := 1; If not Exponent.isNegative Then While not Exponent.isZero do Begin If Exponent.Data[0] and $1 <> 0 Then Begin Result.Multiply(Basis); Result.Modulus(Modulo); End; Basis.Multiply(Basis); Basis.Modulus(Modulo); Exponent.bShR(1); End; End;
Delphi-Quellcode:
function tF_Haupt.mod_exp(basis,exponent,modulo:TBigInt):TBigInt;
var e:TBigInt; 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; |
Re: Exponentieren und dann Modulo: große Zahlen
Delphi-Quellcode:
Function tF_Haupt.mod_exp(Const Basis, Exponent, Modulo: TBigInt): TBigInt;
Begin Result := Basis; Result.ExpMod(Exponent, Modulo); End; Zitat:
[add] hab 'nen verdacht :stupid:
Code:
[/add]
If Exponent.Data[color=#ff0000][0][/color] and $1 <> 0 Then
|
Re: Exponentieren und dann Modulo: große Zahlen
naja es lief ja jetzt nur stützt es bei primzahlen >>20.000 ab und hängt sich auch beim entschlüsseln auf...
|
Re: Exponentieren und dann Modulo: große Zahlen
hast du da mal ein Testprogramm für mich?
|
Re: Exponentieren und dann Modulo: große Zahlen
Übrigens kommt bei der Rechnung
666^58613 folgende Zahl raus: 19723971160619624455773050692305579086788641379042 79 64198191449046292583386241568038339803081818...(16 5395 Ziffern). und das ist eine Septenvigintmilliaquingentduooktogintillion neunhundertzweiundsiebzig Septenvigintmilliaquingentunoktogintilliarden dreihundertsiebenundneunzig Septenvigintmilliaquingentunoktogintillionen einhundertsechzehn Septenvigintmilliaquingentoktogintilliarden einundsechzig Septenvigintmilliaquingentoktogintillionen neunhundertzweiundsechzig Septenvigintmilliaquingentnovemseptuagintilliarden vierhundertfünfundvierzig Septenvigintmilliaquingentnovemseptuagintillionen fünfhundertsiebenundsiebzig Septenvigintmilliaquingentoktoseptuagintilliarden dreihundertfünf Septenvigintmilliaquingentoktoseptuagintillionen neunundsechzig Septenvigintmilliaquingentseptenseptuagintilliarde n zweihundertdreißig Septenvigintmilliaquingentseptenseptuagintillionen .... Wer den vollständigen Namen will (der übrigens über 3 MB groß ist), soll mir eine PM schicken ;-) wollte ich nur mal anmerken *g*, Macci |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz