"血をもって書け。そうすればあなたは、血が精神だということを経験するだろう。"

Problem7

素数を小さい方から6つ並べると 2, 3, 5, 7, 11, 13 であり、6番目の素数は 13 である。

10001 番目の素数を求めよ。

Problem3のid:smlyの素数列生成コードがあまりに美しかったのでまるまる借りてしまった・・・
http://codepad.org/OlhYJKCl
Haskell

main = print $ last $ take 10001 $ sieve [2..]
sieve (x:xs) = x:(sieve [z|z<-xs, z `mod` x /= 0])
104743

無限長配列ってこうやって使うんだな。

訂正

  • 10000番めじゃなくて10001番めだ。
  • Problem5じゃなくて7だ。