我是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中成功地使用了primes
和isPrime
的相同定义,即找到第10001个素数。帮助
答案 0 :(得分:5)
我会质疑这一行
primes = filter isPrime [1,3..]
因为2是素数。