0
点赞
收藏
分享

微信扫一扫

Eulerproblem 10 for python

王小沫 2022-07-27 阅读 56


def ext11(n):

"""

一个毕达哥拉斯三元组是一个包含三个自然数的**,a<b<c,满足条件:a2 + b2 = c2

例如:32 + 42 = 9 + 16 = 25 = 52.

已知存在并且只存在一个毕达哥拉斯三元组满足条件a + b + c = 1000。找出该三元组中abc的乘积。

直接循环的效率太低 所以做了一些简化与范围的缩小

a + b + c = n ,a^2 + b ^2 = c^2,a < b < c==> 1< a < n/3 n/(2+sqrt(2))<b< n/2

"""

flag = False

for a in range(1, int(n / 3)):

c = a if a > (n / (2 + 2 ** 0.5)) else int((n /( 2 + 2 ** 0.5)))



for b in range(c, int(n / 2)):

print a, b

if a ** 2 + b ** 2 == (n - a - b) ** 2:



print a, b, n - a - b

flag = True

if flag:

break

if flag:

break


举报

相关推荐

0 条评论