周囲の長さが p の整数直角三角形には多数の解 (a、b、c) があり、これらすべての解に対して a+b+c == p であり、ピタゴラスの定理も適用されます。周囲長が 1000 以下の三角形の解の最大数を計算する Python スクリプトを作成しています。
私のスクリプトは正しいですが、実行に時間がかかります。i7 プロセッサでも 30 分以上かかると思いますので、最適化する必要があります。誰かが私を助けることができますか?(これは Project Euler の問題です。疑問に思っている人がいる場合に備えて)
def solutions(p):
result = []
for a in range(1, p + 1):
for b in range(1, p - a + 1):
for c in range(1, p - a - b + 1):
if a + b + c == p and a < b and b < c:
d = a ** 2
e = b ** 2
f = c ** 2
if (d + e == f) or (e + f == d) or (f + d == e):
result.append((a, b, c))
return len(result)
max_p = 0
max_solutions = 0
for p in range(3, 1001):
print("Processing %d" % p)
s = solutions(p)
if s > max_solutions:
max_solutions = s
max_p = p
print("%d has %d solutions" % (max_p, max_solutions))