2015年12月13日日曜日

151213(4)

Ruby


原始ピタゴラス数の和(2)

1≦x<y<z≦nなる原始ピタゴラス数について、
その和をf(n)とする。
1≦i≦7のとき、f(10 ** i) を求めてみた。

def f(a, b, c, n)
  return 0 if c > n
  s = a + b + c
  s += f( a - 2 * b + 2 * c,  2 * a - b + 2 * c,  2 * a - 2 * b + 3 * c, n)
  s += f( a + 2 * b + 2 * c,  2 * a + b + 2 * c,  2 * a + 2 * b + 3 * c, n)
  s += f(-a + 2 * b + 2 * c, -2 * a + b + 2 * c, -2 * a + 2 * b + 3 * c, n)
  return s
end

p (1..7).map{|i| f(3, 4, 5, 10 ** i)}

出力結果
[12, 1936, 179568, 18128932, 1809940702, 180861233118, 18090545150630]

0 件のコメント:

コメントを投稿

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