2015年3月23日月曜日

150323

Ruby


sigma(n)

sigma(n) = 2n + 2 となる n は
オンライン整数列大辞典のA088831(https://oeis.org/A088831/list)
によると
[20,104,464,650,1952,130304,522752,8382464,
 134193152,549754241024,8796086730752]

また、sigma(n) = 2n - 2 となる n は
オンライン整数列大辞典のA191363(http://oeis.org/A191363/list)
によると
[3,10,136,32896,2147516416]

これらのうち、200000以下のものを出力するコードを書いてみた。

def sum_of_divisors(p)
  sum = 0
  q = Math.sqrt(p).to_i
  for i in (1..q - 1)
    if p % i == 0
      sum += i + p / i
    end
  end
  if p % q == 0
    if p == q * q
      sum += q
    else
      sum += q + p / q
    end
  end
  return sum
end

def sigma(min, max)
  ary088831 = []
  ary191363 = []
  for i in (min..max)
    j = sum_of_divisors(i) - i * 2
    if j == 2
      ary088831 << i
    elsif j == - 2
      ary191363 << i
    else
    end
  end
  return [ary088831, ary191363]
end

p sigma(1, 200000)

0 件のコメント:

コメントを投稿

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