blob: 5e1681eec203ed4933ed298e6a15fc0cae2ddba2 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
module sieve
// The standard Sieve of Eratosthenes.
import StdEnv
NrOfPrimes :== 1000
// The sieve algorithm: generate an infinite list of all primes.
Start = take NrOfPrimes (sieve [2..])
where
sieve [prime:rest] = [prime : sieve (filter prime rest)]
filter p [h:tl] | h rem p == 0 = filter p tl
= [h : filter p tl]
filter p [] = []
|