對於具有周長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