summaryrefslogtreecommitdiff
path: root/sieve.icl
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 []						= []