Posted at

素数リストを生成する(Erlang)

More than 3 years have passed since last update.

素数リストを生成する

考え方はすでに素数と判定されたら、リストに入れる。(PS: Prime List)

素数の判定は:リストに入っている素数すべてに割り切れない時にこの数字の素数です。

奇数だけを判定します。

#!/usr/bin/env escript

main(_) ->
Res = prime_list(1000).
%% io:format("~p~n", [length(Res)]).

prime_list(Num)->
prime_list(Num, 3, [2]).

prime_list(Num, PP, PS) when PP >= Num ->
lists:reverse(PS);
prime_list(Num, PP, PS) when PP < Num ->
IsPrime = lists:any(fun(X) -> PP rem X =:= 0 end, PS),
case IsPrime of
true -> prime_list(Num, PP+2, PS);
false -> prime_list(Num, PP+2, [PP|PS])
end.