在Haskell中项目Euler Number 10,找不到Bug

时间:2011-10-19 21:31:11

标签: haskell

我是Haskell的初学者,我遇到了Project Euler Problem 10的问题。这就是我所拥有的:

primes :: Integral a => [a]
primes = filter isPrime [1,3..]

isPrime :: Integral a => a -> Bool
isPrime 1 = False
isPrime n = not $ any isDivisibleBy [2..maxTry]
    where isDivisibleBy x = n `mod` x == 0
          maxTry = floor $ sqrt $ fromIntegral n

solution :: Integral a => a
solution = sum $ takeWhile (<2000000) primes

main = putStrLn $ show solution

当我运行时,我得到142913828920.Euler项目说这是不正确的。这令我感到困惑,因为我在问题7中成功地使用了primesisPrime的相同定义,即找到第10001个素数。帮助

1 个答案:

答案 0 :(得分:5)

我会质疑这一行

primes = filter isPrime [1,3..]

因为2是素数。