[erlang-questions] Prime numbers exercise from Project Euler

Peer Stritzinger <>
Wed Jul 24 17:56:23 CEST 2013


On 2013-07-23 14:47:52 +0000, Damian Kösters said:
> primelist(Filterlist,Max,I) when I<Max
>     -> primelist([X||X<-Filterlist,(X==I) or (X rem I /= 0)],Max,I+1);
> primelist([],Max,I)
>     -> [];

This is no Sieve of Erasthotenes but rather trial division.  That is 
one reason why this is much slower than it needs to be.

See this answer for an explanation why it is no Sieve:

http://stackoverflow.com/a/389740/364327

(make sure to read the linked paper)

Also one speedup in your code would already be to only check until a 
Max of sqrt(N).

Generally Sieve of Erasthotenes is not very fast as is to be expected 
of a algorithm thats over 2000 years old ;.)

If you really looking for a fast sieve try 
http://en.wikipedia.org/wiki/Sieve_of_Atkin

But I think Erasthotenes Sieve would be sufficiently fast if 
implemented correctly.






More information about the erlang-questions mailing list