Python中的毕达哥拉斯三胞胎

时间:2014-12-03 19:32:23

标签: python

我想帮助解决以下问题: 找到a,b,c的三元组的乘积,其中: a + b + c = 1000 和a ^ 2 + b ^ 2 = c ^ 2. 我写了一些python代码,但它没有输出任何东西。请问你能告诉我它有什么问题吗?

    for a in range(1000):
        for b in range(1000-a):
           c = 1000-a-b
           if a**2 + b**2 == c**2:
               print a*b*c
    else:
    break

1 个答案:

答案 0 :(得分:1)

你的想法是正确的。你必须修改你的格式并在最后删除这个break语句(这个break会让你在第一次尝试时结束循环。哦还有一件事.a和b不能为0因为否则会是微不足道的(500 ** 2 + 0 ** 2 == 500 ** 2)。

def find_product(sum):
     for a in range(1, sum):
         for b in range(1, sum - a):
             c = sum - a - b
             if a**2 + b**2 == c**2:
                   print a*b*c
                   return a*b*c
             else:
                 pass
                 #Keep looking! Dont end here :)
     print 'No such triplet exists!'

结果是:

>>> find_product(1000)   # 200**2 + 375**2 = 425**2
31875000

当然,您可以使用一些聪明的数学技巧来优化您的代码:)