码迷,mamicode.com
首页 > 编程语言 > 详细

Python练习题 037:Project Euler 009:毕达哥拉斯三元组之乘积

时间:2016-10-29 14:16:26      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:href   spec   ber   练习   highlight   product   而且   triple   tar   

本题来自 Project Euler 第9题:https://projecteuler.net/problem=9

# Project Euler: Problem 9: Special Pythagorean triplet
# A Pythagorean triplet is a set of three natural numbers,
# a < b < c, for which, a**2 + b**2 = c**2
# For example, 3**2 + 4**2 = 9 + 16 = 25 = 5**2.
# There exists exactly one Pythagorean triplet for which a + b + c = 1000.
# Find the product abc.
# Answer: 31875000

for a in range(1,1000//3):
    for b in range(a+1,1000//2):
        c = 1000 - a - b
        if a**2 + b**2 == c**2:
            print(a*b*c)

这题若是想清楚了,其实是相当简单,无非是找出各种 a+b+c=1000 的组合,然后验证 a**2 + b**2 = c**2 就行了。遍历范围方面,因为 a<b<c,最小的 a 最大也就是 332,所以取值范围可设为 range(1, 1000//3)。b 肯定比 a 大,而且撑死了也超不过 500,所以取为 range(a+1, 1000//2)。而一旦 a, b 都确定,c 自然也就确定了。

话说、什么“毕达哥拉斯三元组”啊?不就是“勾股定律”里的“勾三股四弦五”吗…… 果然古代中国人都不怎么外交的,所以西方人都不知道,这定律早就被中国人发现了……

Python练习题 037:Project Euler 009:毕达哥拉斯三元组之乘积

标签:href   spec   ber   练习   highlight   product   而且   triple   tar   

原文地址:http://www.cnblogs.com/iderek/p/6010591.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!