2015年12月23日水曜日

151223

Ruby


n! を2^(n - k) で割ると整数か?

n が小さいと、思っていたほど2 でたくさん割り切れない。

def f(k, n)
  m = ((1..n).inject(:*) + 0.0) / 2 ** (n - k)
  return m.to_i if m == m.to_i
  m
end

p (1..20).map{|i| f(2, i)}
p (1..20).map{|i| f(3, i)}
p (1..20).map{|i| f(4, i)}

出力結果
[2, 2, 3, 6, 15, 45, 157.5, 630, 2835, 14175, 77962.5, 467775, 3040537.5, 21283762.5, 159628218.75, 1277025750, 10854718875, 97692469875, 928078463812.5, 9280784638125]
[4, 4, 6, 12, 30, 90, 315, 1260, 5670, 28350, 155925, 935550, 6081075, 42567525, 319256437.5, 2554051500, 21709437750, 195384939750, 1856156927625, 18561569276250]
[8, 8, 12, 24, 60, 180, 630, 2520, 11340, 56700, 311850, 1871100, 12162150, 85135050, 638512875, 5108103000, 43418875500, 390769879500, 3712313855250, 37123138552500]

0 件のコメント:

コメントを投稿

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