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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python练习题 037:Project Euler 009:毕达哥拉斯三元组之乘积相关的知识,希望对你有一定的参考价值。

本题来自 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:毕达哥拉斯三元组之乘积的主要内容,如果未能解决你的问题,请参考以下文章

Python练习题 047:Project Euler 020:阶乘结果各数字之和

Python练习题 041:Project Euler 013:求和取前10位数值

Python练习题 042:Project Euler 014:最长的考拉兹序列

Python练习题 038:Project Euler 010:两百万以内所有素数之和

Python练习题 048:Project Euler 021:10000以内所有亲和数之和

Python练习题 046:Project Euler 019:每月1日是星期天