对于周长为 p 的整数直角三角形有许多解(a,b,c),对于所有这些解,a+b+c == p 和勾股定理也适用。我正在编写一个 Python 脚本来计算周长 <= 1000 的三角形可能的最大解决方案数。
我的脚本是正确的,但是它需要永远运行。我敢肯定即使使用我的 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))