2016年5月15日日曜日

160515

Ruby


素数でしりとり

素数を最初から順に
2 → 23 → 31 → …
とつなげていく。
オンライン整数列大辞典の
https://oeis.org/A061448/b061448.txt
に途中まで載っているが、自分で求めてみた。
(ただし、素数を列挙するという非効率なやり方です。)

require 'prime'

cnt = 0
d = 2
ary = Prime.each(10 ** 7).to_a
ary.each{|a|
  str = a.to_s
  if d == str[0].to_i
    cnt += 1
    print cnt
    print ' '
    puts a
    d = str[-1].to_i
  end
}

出力結果
1 2
2 23
3 31
4 101
5 103
6 307
7 701
8 1009
9 9001
10 10007
11 70001
12 100003
13 300007
14 700001
15 1000003
16 3000017
17 7000003

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。