2016年3月2日水曜日

160302(2)

Ruby


Ramanujan prime(1)

オンライン整数列大辞典の
A104272(http://oeis.org/A104272/list)
と比較し、答え合わせしてみる。

def A104272(n)
  # xは大きな数
  x = 1000
  ary = [0]
  a = Array.new(x + 1, 1)
  l = 0
  a[0] = l
  a[1] = l
  i = 2

  while i * i <= x
    # 素数のとき
    if a[i] == 1
      l += 1
      ary[l - a[i / 2]] = i
      j = i + i
      while j <= x
        a[j] = 0
        j += i
      end
    end
    a[i] = l
    i += 1
  end

  while i <= x
    # 素数のとき
    if a[i] == 1
      l += 1
      ary[l - a[i / 2]] = i
    end
    a[i] = l
    i += 1
  end
  ary[1..n]
end
ary = A104272(54)

# OEIS A104272のデータ
ary0 =
[2,11,17,29,41,47,59,67,71,97,101,107,127,149,151,
 167,179,181,227,229,233,239,241,263,269,281,307,
 311,347,349,367,373,401,409,419,431,433,439,461,
 487,491,503,569,571,587,593,599,601,607,641,643,
 647,653,659]
# 一致の確認
p ary == ary0

0 件のコメント:

コメントを投稿

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