天天看點

算法-1 python版

方法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
OO