Problem 7 (Project Euler) [和訳])
By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.
What is the 10001st prime number?
件のメソッド「next_prime」では答えにたどり着くのに2分近くかかりました(笑)
いよいよエラストテネス先生の出番です。自分でも書いてみましたが、下記のページの"2009/04/06"付けのゲスト氏のコードが美しくて速くてわかりやすいです。
nまでの素数のリストを作成する (codeなにがし)
思い返してみると、「エラストテネスのふるい」を紙の上に手で書いた際には、機械的に素数個おきの数字を消すだけでした。ですから「割り算してみて余りがあったら…云々」などは一切しないこのコードの処理が当たり前なのでしょう。
さらにふるいとなったブール値の配列から素数配列を"each_with_index"で書き出すところも勉強になりました。