2016年1月11日月曜日

特殊なピタゴラスの三つ組み数

Project Euler 9

ピタゴラスの三つ組み数とは、自然数 $a < b < c$ のうち \[a^2 + b^2 + c^2\] を満たすものをいう。
例えば、$3^2+4^2=9+16=25=5^2$等のようなものである。

ピタゴラスの三つ組み数のうち、$a + b + c = 1000$ となるものが一つ存在している。
このときの $abc$ を計算せよ。


$a^2 + b^2 = c^2$ となるため、$a, b < c$ は自明である。(もし $b\geq c$ ならば、$b^2\geq c^2$ であり、$a^2 + b^2 > c^2$ となる。)
$a < b$ であること、かつ、可換則に留意すると次のようになる。
# SAMPLE_1

N = 1000

for a in xrange(1, N+1):
    for b in xrange(a, N-a):
        c = N - a - b
        a_2 = a**2
        b_2 = b**2
        c_2 = c**2
        if c_2 == a_2 + b_2:
            print "a = %d, b = %d, c = %d, abc = %d" % (a, b, c, a*b*c)

0 件のコメント:

コメントを投稿