素数リストを生成する
考え方はすでに素数と判定されたら、リストに入れる。(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.