Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Modulares Potentieren???
ute.h_80 - Mo 24.11.03 17:57
Titel: Modulares Potentieren???
:?
Hallo!
Kann mir jemand erklären wie man modulares Potenzieren in Delphi realisieren kann :?:
Hab auch schon nen Java Algorithmus aber kann das nicht umsetzen: :cry:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| z = 1 while b != 0 do while (b mod 2) = 0 do b = b / 2 x = x2 mod n end b = b - 1 z = (z * x) mod n end end |
Gruß Ute
barfuesser - Mo 24.11.03 19:22
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| z := 1; while b <> 0 do begin while (b mod 2) = 0 do begin b := b div 2 ; x := x2 mod n; end; b := b - 1; z := (z * x) mod n; end; |
jetzt müßte man nur noch wissen, wo
b,
x2 und
n herkommen.
barfuesser
ute.h_80 - Mo 24.11.03 19:36
b, x, und n sind eingegebene Int64 Werte
und x2 hat ich vergessen zu ändern ist in echt x hoch 2 oder (x*x)
Schuldigung :!:
Hab deinen Code ausprobiert aber das Programm stürzt immer wieder ab und geht nur noch übern TaskManager zu beenden. :(
Danke für deine mühe!
ute.h_80 - Mo 24.11.03 19:49
Hab sonst auch noch den richtigen Java Code, falls das was nützt!
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| public void modexp() { x = xField.getLongKey(); b = bField.getLongKey(); n = nField.getLongKey(); int pos, first = 2; String bin = Long.toBinaryString(b); binField.setText(bin);
comp.setText(" (i) b"+newline+newline); long z = 1; for (int i = 0; i < bin.length(); i++) { // internal string index char bi = bin.charAt(i); pos = bin.length() -i -1; // index as to algorithm if (pos < 10) { comp.append(" "); }; comp.append("(" + (pos) + ") " + bi);
// square comp.append(" z = "+ z +" ** 2"); if (first > 0) { first--; comp.append(" mod "+ n); } z = Helpers.mod(z,z,n); comp.append(" = " + z + newline);
// maybe multiply if (bi == '1') { comp.append(" z = "+ z +" * "+ x); z = Helpers.mod(z,x,n); if (first > 0) { first = 0; comp.append(" mod "+ n); } comp.append(" = "+ z + newline); } } } |
ute.h_80 - Di 25.11.03 12:40
Danke, ich habs jetzt doch noch hingekriegt :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!