language: Haskell (ghc-6.8.2)
date: 114 days 1 hour ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- prime numbers
 
sieve [] = []
 
sieve (x:u) = x : (sieve (filter (\y -> mod y x /= 0) u))
 
allPrimes = sieve [2..]
 
divisorsFrom x u@(y:v)
        | x == 1                = []
        | (mod x y == 0)        = y : divisorsFrom (div x y) u
        | otherwise             = divisorsFrom x v
 
divisors x = divisorsFrom x allPrimes
 
main = do (print (sum (takeWhile (<130000) (sieve [2..2000000]))))
 
--      print (divisors 600851475143)
--      print (allPrimes !! 10000)
prime numbers (Eratosthenes)