1
私はハスケルの初心者です。Project Euler Problem 10と問題があります。ここで私が持っているものだ:私はこれを実行するとハスケルのプロジェクトオイラー番号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.プロジェクトオイラーはそれが間違っていると言っている取得します。これは問題No.7のprimes
とisPrime
に同じ定義をうまく使用していたため、私はうんざりです。これは10001番目の素数を見つけることでした。助けて?
あなたが[世界で最もエリートなハッカー]でない限り、1は素数ではありません(http://www.imdb.com/title/tt0298814/goofs) – hugomg
私はisPrimeが1を除外することを望みます。 2は明示的に除外されていますが理解できません。そして、私はそれが問題だと確信しています... –
ああ、私はその明示的なチェックを逃していました。私は彼がどのように正しく10001プライムを得たのだろうか。 – hugomg