プロジェクトオイラー
http://projecteuler.net/index.php
Q9.
ピタゴラスの数の組合せで、和が1000ときの積
自然数m,nでm > nとして、
a = m2 - n2
b = 2mn
c = m2 + n2
とできる(ただし、aとbの大小は任意)。
a + b + c = 2m(m + n) < 4m2
これでかなり絞り込める。
from math import sqrtdef pythagorean(N):
if N % 2 == 1:
return -1
m = int(sqrt(N / 4)) + 1
while True:
n = N / (2 * m) - m
if n <= 0:
return -1
if N % (2 * m) == 0:
return 2 * m * n * (m ** 4 - n ** 4)
m += 1N = 1000
print pythagorean(N)