@Amateurprofi, negaH und Der_Unwissende: Danke für eure Hilfe!!!
Zitat von
Amateurprofi:
Naja St.Pauli, dann hab ich mal deine Hausaufgaben gemacht.
THX!
Zitat von
Amateurprofi:
In der Funktion ModularExponentiation heit es im Pseudo Code
Zitat:
Let (bk, bk-1,...b0) be the binary representation of b
for i <-- k downto 0
Bei Dir wird das so umgesetzt daß, b als Binärstring in b_bin gestellt wird.
b_bin[Length(b_bin)] ist dabei Bit0.
Auf den ersten Blick sieht das so aus, wie im Pseudo Code, aber beim zweiten Blick eben nicht.
Die Schleife for i:=k downto 0 faßt zuerst hast höchstwertige Bit an und zuletzt Bit0.
Bei Deiner Schleife for i:=Length(b_bin) downto 1 ist es genau umgekehrt.
Ja stimmt. Danke - ich hatte mich so auf die Variabeln u und t konzentriert, um den Fehler dort zu finden, dass ich den ganzen Rest vollkommen vergessen hatte...
Zitat von
Amateurprofi:
Ich hab das korrigiert und dann für alle (ungeraden) Zahlen von 3 bis 65535 probiert. Bis 46337 bringt das Programm korrekte Ergebnisse. Für höhere Werte sagt es nur noch composite.... Hab nicht weiter geprüft, warum.
Ich vermute, dieser Fehler hat wieder mit der Binär-Darstellung von b zu tun. Werde mich gleich nochmal in Ruhe damit auseinander setzten
@ negaH: Danke für deine Optimierung. Zu zweitens: Davon haben wir ja gesprochen. Es muss sich um einen Fehler in der Implentierung handeln! Und zu den Suchvorschlägen: Da hatte ich wohl die falschen Suchbegriffe (Miller & Rabin) - und aus den Ergebnissen wurde mir nicht geholfen...