Miller–Rabin primality test: Difference between revisions

(Add Erlang Implementation)
Line 597:
end.
 
rm_seriesmr_series(N, A, D, S) when N rem 2 == 1 ->
Js = lists:seq(0, S),
lists:map(fun(J) -> pow_mod(A, math:pow(2, J)*D, N) end, Js).
 
is_rm_primeis_mr_prime(N, As) when N>2, N rem 2 == 1 ->
{D, S} = find_ds(N),
not lists:any(fun(A) ->
case rm_seriesmr_series(N, A, D, S) of
[1|_] -> false;
L -> not lists:member(N-1, L)
Line 631:
is_prime(N) when N rem 2 == 0 -> false;
is_prime(N) when N < 341550071728321 ->
is_rm_primeis_mr_prime(N, proving_bases(N)).
 
is_probable_prime(N) ->
is_rm_primeis_mr_prime(N, random_bases(N, 20)).
 
first_1000() ->
Anonymous user