Zitat von
Corpsman:
Dein Parser Rechnet Falsch :(
(((5^16) mod 47)^9) mod 47 = 21
(((5^9) mod 47)^16) mod 47 = 0
behauptet dein Parser,
Laut Google ist das aber = 34, beides mal ...
Hallo Corpsman,
ich war im Urlaub, dahei eine verspätete Antwort:
beide von dir genannten Rechnungen sollten 21 ergeben.
Daß mein Parser für die zweite Rechnung 0 als Resultat nennt, liegt, wie von krassonkel schon vermutet, an den hohen Zwischenergebnissen.
Der Parser arbeitet intern mit Extended-Zahlen und 40^16 / 47 läßt sich damit nicht exakt darstellen.
Aber : Warum verwendest du nicht die Funktion ExpMod ?
expmod(expmod(5,16,47),9,47) ergibt 21
expmod(expmod(5,9,47),16,47) ergibt 21
Ich hab übrigens das gesamte Innenleben des Parsers überarbeitet - er ist jetzt etwa 25 % schneller.
Außerdem möchte ich den Teil des Programmes der für die Auswertung von Ausdrücken zuständig ist, in Form von .dcu Dateien zur Verfügung stellen. Die können dann in eigene Programme eingebunden werden.
Aber ich werde noch einige Zeit brauchen um Fehler zu finden und zu beseitigen.