对于具有周长p的整数直角三角形,存在许多解(a,b,c),对于所有这些解,a + b + c == p和毕达哥拉斯定理也适用。我正在编写一个Python脚本来计算可能的解决方案的最大数量为一个三角形< = 1000的三角形。如何优化这个Python脚本?
我的脚本是正确的,但它需要永远运行。我相信即使使用我的i7处理器也需要30多分钟,所以我需要优化它。有人能帮我吗? (这是一个关于项目欧拉的问题,如果你想知道)
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))
这是不是更适合于codereview.stackexchange.com?除非你要求更好的算法,在这种情况下,我猜这个问题应该是语言不可知的。 –
这甚至可以进行数学堆栈交换 – Greg
快速评论,'a jozefg