2008-09-10 カテゴリ: その他のプログラミング タグ: Haskell アルゴリズム 最近すっかりブログから離れていたので、リハビリがてらにメモ代わりのエントリー。 Haskellで素数の無限リストを生成する関数を3つほど作ったのでメモ。 primes1 = 2:f [3,5..] where f (x:xs) = x:f [y | y <- xs, mod y x /= 0] primes2 = 2:filter f [3,5..] where f n = all ((/= 0) . (mod n)) (takeWhile ((<= n) . (^ 2)) primes) primes3 = 2:f [3] [3,5..] where f (x:xs) ys = let (ps, qs) = span (< x^2) ys in ps ++ f (xs ++ ps) [z |