a+b+c=1000,且 a^2+b^2=c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合?
方法1: 不使用算法
三重循环
import time
start_time = time.time()
for a in range(0,1001):
for b in range(0,1001):
for c in range(0,1001):
if a**2 + b**2 == c**2 and a+b+c == 1000:
print("a, b, c: %d, %d, %d" % (a, b, c))
end_time = time.time()
print("一共用了%f秒" %(end_time - start_time))
print("结束!")
a, b, c: 0, 500, 500
a, b, c: 200, 375, 425
a, b, c: 375, 200, 425
a, b, c: 500, 0, 500
一共用了1137.022385秒
结束!
方法2: 使用算法
import time
start_time = time.time()
for a in range(0,1001):
for b in range(0,1001-a):
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("一共用了%f秒" %(end_time - start_time))
print("结束!")
a, b, c: 0, 500, 500
a, b, c: 200, 375, 425
a, b, c: 375, 200, 425
a, b, c: 500, 0, 500
一共用了0.633656秒
结束!
- 可以看出,一个简单的算法,效率上大大提高! 1137.022385s VS 0.633656s