2014年9月27日土曜日

140927

Ruby


Lucky number

ハッピー数の生成はよく見かけるので、幸福数を生成してみる。
オンライン整数列大辞典の
A000959(http://oeis.org/A000959/list)
と比較し、答え合わせしてみる。

# Nは3以上
N = 303
ary = (1..(N / 2.0).ceil).map{|i| i * 2 - 1}

m = 1
n = ary[m]
while 2 * n <= N   # 次に取り除く数がNを超えなくなるまで続ける。
  ary0 = []
  ary.each_with_index{|e, i|
    if e <=  n
      ary0 << e
    elsif
      if (i + 1) % n != 0
        ary0 << e
      end
    end
  }
  ary = ary0
  m += 1
  n = ary[m]
end

# OEIS A000959のデータ
ary0 =
[1,3,7,9,13,15,21,25,31,33,37,43,49,51,63,67,69,
 73,75,79,87,93,99,105,111,115,127,129,133,135,141,
 151,159,163,169,171,189,193,195,201,205,211,219,
 223,231,235,237,241,259,261,267,273,283,285,289,
 297,303]
# 一致の確認
p ary == ary0

0 件のコメント:

コメントを投稿

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