--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2008/10/07

Project Euler: Problem 10

Problem 10

純粋にやると遅延評価のやりすぎによる stack over flow となった。seq を用いて遅延評価を回避している。

しかしこういう答えだと、純粋に和を求めなくともうまい方法があるのではと思ってしまう。いやたぶんあるんだろう。確信はないけど。

参考: sum の stack overflow - haskell のある暮らし

実行結果

$ runhaskell 10.hs
1000000000001

プログラム

1 primes = sieve [2..]
2     where sieve (p:ps) = p : [x | x <- ps, x `mod` p /= 0]
3
4 = strictSum 0 $ takeWhile (<= 2000000$ primes
5     where strictSum r []     = r
6           strictSum r (x:xs) = let r' = r+x
7                                 in r' `seq` strictSum r' xs
8
9 main = print $ f
スポンサーサイト

comment

post




上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。