Eulerproblem 10 for python

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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值