的篩非詳盡的模式我想使用埃拉托色尼的篩的這段代碼從該頁面:http://en.literateprograms.org/Sieve_of_Eratosthenes_(Haskell)#chunk DEF:primes_naive哈斯克爾:與埃拉托色尼
只有一點修改,所以它只顯示了素數高達數:
primes :: Integral a => a -> [a]
primes m = sieve [2..m]
where
sieve (p:xs) = p : sieve [x|x <- xs, x `mod` p > 0]
但WinGHCi總是錯誤出現(例如10):
primes 10
[2,3,5,7*Main> *** Exception: eratosthenes.hs:4:5-55: Non-exhaustive patterns in function sieve
我知道,從遞歸函數,其中,例如案件英里此錯誤但是這裏缺少什麼?
儘管配方看起來像Eratosthenes的篩網,但評估實際上是不同的並且非常慢。您可能對[本文]感興趣(https://www.cs.hmc.edu/~oneill/papers/Sieve-JFP.pdf)。 –
將其更改爲「sieve(p:xs)|」 p * p <= m = p:sieve [x | x < - xs,x'mod' p> 0] |否則=(p:xs)''爲了修復和巨大的加速。 –