题目:
如果 a+b+c=1000,且 a2+b2=c**2(a,b,c 为自然数),如何求出所有a、b、c可能的组合?
第一次尝试:
import time
start_time = time.time()
# 三重循环嵌套
for a in range(1001):
for b in range(1001):
for c in range(1001):
if a + b + c == 1000 and a**2 + b**2 == c**2:
print("a, b, c: %d, %d, %d"%(a, b, c))
end_time = time.time()
print("elapsed: %f"%(end_time - start_time))
print("completel")
========== RESTART: C:\Users\hy\Desktop\test.py =========
a, b, c: 0, 500, 500
a, b, c: 200, 375, 425
a, b, c: 375, 200, 425
a, b, c: 500, 0, 500
elapsed: 243.552707
completel
运行结果耗时很久
第二次尝试:
import time
start_time = time.time()
for a in range(1001):
for b in range(1001):
c = 1000 - a - b
if a**2 + b**2 == c**2:
print("a, b, c: %d, %d, %d"%(a,b,c))
end_time = time.time()
print('Elapsed: %f'%(end_time - start_time))
========= RESTART: C:\Users\hy\Desktop\test2.py =========
a, b, c: 0, 500, 500
a, b, c: 200, 375, 425
a, b, c: 375, 200, 425
a, b, c: 500, 0, 500
Elapsed: 1.470171
减少循环操作,大大节约了时间