算法引入

  1. 第一次尝试
# 如果a+b+c=1000,且a^2+b^2=c^2(a,b,c为自然数),如何求出所有a,b,c可能的组合?
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 + 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("times:%d" % (end_time - start_time))
print("finished")
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 /Users/xinqi/PycharmProjects/test/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
times:185
finished

Process finished with exit code 0
  1. 第一次尝试的改进,如此一来时间缩短了许多
# 如果a+b+c=1000,且a^2+b^2=c^2(a,b,c为自然数),如何求出所有a,b,c可能的组合?
import time
start_time = time.time()

for a in range(0, 1001):
    for b in range(0, 1001):
        #因为c是可以从a和b得出的,所以c不需要再从0到1000遍历一边
        c = 1000 - a - b
        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("times:%d" % (end_time - start_time))
print("finished")
/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 /Users/xinqi/PycharmProjects/test/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
times:1
finished

Process finished with exit code 0
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 你有她的此生不悔 她有你的完美爱情 而我只愿用一生的流浪换你余生无恙
    洛木木阅读 155评论 0 0
  • 清明三天假期有点浪,险些把计划拖延过去,最后一天及时醒悟,毅然穿上装备出去跑,鉴于这次是最难的一次挑战,所以我很小...
    秋雨W阅读 258评论 1 0
  • 今天是周末,原则上来讲,上班的人也在休息武汉的夏天真不是一般的热,坐在椅子上,光着膀子,脖子上再搭一条湿毛巾,就这...
    田田kyle阅读 127评论 0 0
  • 接着上篇文章 我觉得官方的SwipeRefreshLayout已经是个很好的控件,这里就不多说了 StringUR...
    木木木丢了阅读 758评论 0 0
  • 第二章相识 进了高中第一天,班主任LP老师排好座位,他就坐在我前桌,当时他的同桌小江是我幼儿园同学小学同学外加初中...
    回忆录的小马甲阅读 264评论 0 1