2016年3月6日日曜日

160306(3)

Ruby


Numbers n such that n concatenated with itself is a biperiod square(1)

オンライン整数列大辞典の
A102567(http://oeis.org/A102567/list)
と比較し、答え合わせしてみる。
(ただし、
10^i + 1 = p^1 q^1 r^1 s^1 …
もしくは
10^i + 1 = p^2 q^1 r^1 s^1 …
と素因数分解される場合しか
考慮していません。)

require 'prime'

def A102567(n)
  ary = []
  # mは大きめにとる
  m = 21
  (1..m).each{|i|
    j = 10 ** i + 1
    a = Prime.prime_division(j).select{|i| i[1] > 1}
    # 以下は、a = [[x, 2]]のとき有効
    if a.size == 1 && a[0][1] == 2
      a00 = a[0][0]
      k = j / (a00 * a00)
      (1..a00 - 1).each{|l|
        kl = k * l * l
        ary << kl if kl >= 10 ** (i - 1)
      }
    end
  }
  ary.sort!
  ary[0..n - 1]
end
ary = A102567(11)

# OEIS A102567のデータ
ary0 =
[13223140496,20661157025,29752066116,40495867769,
 52892561984,66942148761,82644628100,
 183673469387755102041,326530612244897959184,
 510204081632653061225,734693877551020408164]
# 一致の確認
p ary == ary0

0 件のコメント:

コメントを投稿

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