2023年8月14日月曜日

230814

Ruby


素数を生成する漸化式(2)

素数だけを出力することができる。

require 'prime'

def A020639(n)
  return 1 if n == 1
  Prime.each(n){|i|
    return i if n % i == 0
  }
end

def A137613(n)
  ary = []
  a, b = 5, 5
  while ary.size < n
    ary << b
    a += b - 1
    b = A020639(a)
  end
  ary
end

n = 100
p A137613(n)

出力結果
[5, 3, 11, 3, 23, 3, 47, 3, 5, 3, 101, 3, 7, 11, 3, 13, 233, 3, 467, 3, 5, 3, 941, 3, 7, 1889, 3, 3779, 3, 7559, 3, 13, 15131, 3, 53, 3, 7, 30323, 3, 60647, 3, 5, 3, 101, 3, 121403, 3, 242807, 3, 5, 3, 19, 7, 5, 3, 47, 3, 37, 5, 3, 17, 3, 199, 53, 3, 29, 3, 486041, 3, 7, 421, 23, 3, 972533, 3, 577, 7, 1945649, 3, 163, 7, 3891467, 3, 5, 3, 127, 443, 3, 31, 7783541, 3, 7, 15567089, 3, 19, 29, 3, 5323, 7, 5]