Основное сито в Haskell

Я очень новичок в Haskell, и я просто пытаюсь найти сумму первых 2 миллионов простых чисел. Я пытаюсь сгенерировать простые числа, используя сито (Кажется, сито Эратосфена? ), но это действительно очень медленно, и я не знаю, почему. Вот мой код.

sieve (x:xs) = x:(sieve $ filter (\a -> a `mod` x /= 0) xs)
ans = sum $ takeWhile (<2000000) (sieve [2..])

Заранее спасибо.

8
задан Zero Piraeus 22 January 2015 в 18:44
поделиться