2015年11月8日日曜日

151108(2)

Ruby


Polite number(2)

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

require 'prime'

def politeness(n)
  return 0 if n < 2
  factor = Prime.prime_division(n)
  o_factor = factor.clone
  o_factor.shift if o_factor[0][0] == 2
  # 奇数の約数の個数 - 1
  o_factor.inject(1){|a, n| a * (n[1] + 1)} - 1
end

def A069283(n)
  (0..n).map{|i| politeness(i)}
end
ary = A069283(100)

# OEIS A069283のデータ
ary0 =
[0,0,0,1,0,1,1,1,0,2,1,1,1,1,1,3,0,1,2,1,1,3,1,1,
 1,2,1,3,1,1,3,1,0,3,1,3,2,1,1,3,1,1,3,1,1,5,1,1,1,
 2,2,3,1,1,3,3,1,3,1,1,3,1,1,5,0,3,3,1,1,3,3,1,2,1,
 1,5,1,3,3,1,1,4,1,1,3,3,1,3,1,1,5,3,1,3,1,3,1,1,2,
 5,2]
# 一致の確認
p ary == ary0

0 件のコメント:

コメントを投稿

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