Forum: Sonstige Fragen zu Delphi
by gammatester,
17. Jun 2009
Also die schnelle direkte Übertragung meiner Routine nach StringMatheLib scheint doch zu funktionieren:
{---------------------------------------------------------------------------}
procedure miller_rabin(n: string; t: longint; var prime: boolean);
{-Miller-Rabin test of n, security parameter t, from HAC p. 139 Alg.4.24}
var
n1,n2, y, r, x: string;
s,j: longint;
Begin
Forum: Sonstige Fragen zu Delphi
by gammatester,
16. Jun 2009
Diese Zahlen zeigen, daß Du noch nicht ganz verstanden hast, was der Test eigentlich macht: In witness(a, n) ist a eine Zufallszahl mit 2 <= a <= n-2. Nun überleg mal wieviel (Zufalls-)Zahlen es zwischen 2 und 0 gibt, zwischen 2 und 1, und zwischen 2 und 17 etc.
Wenn Du Probleme hast Code von C etc nach Pascal umzusetzen, hilft Dir vielleicht meine Miller-Rabin-Implementation aus MPArith...
Forum: Sonstige Fragen zu Delphi
by gammatester,
16. Jun 2009
Nun, es fehlen mal wieder jegliche Hinweise und Kommentare, was was ist. Liefert witness true wenn a ein Zeuge für die Nichtprimalität von n ist (das wäre die Standarddefinition)? Gleiche Frage für millerrabin.
Auf jeden Fall ist die Schleife
for i:=1 to s-1 do begin
a:=mathe.Zufall(mathe,'0',mathe.Differenz(n,'1'));
if witness(a,n)=false then begin
result:=false;
exit;
...