python - Python 中的毕达哥拉斯三元组

标签 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

最佳答案

你的想法是正确的。你必须修复你的格式并在最后删除这个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

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

关于python - Python 中的毕达哥拉斯三元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27280109/

相关文章:

Python 3.4,无法访问使用 exec() 创建的变量

python - 如何在具有多个IP的机器上控制ZeroMQ数据包的源IP地址?

python - Pandas 根据时间条件连接两个表

python - 使用 nginx 和 uWSGI 为 django 提供服务

python - 无法使用 Python 登录亚马逊

python - DLL 加载失败 : The specified procedure could not be found. win32api、sys、os

Python/Pandas - 从列值重新排列字符串

python - 在 python 中的对列表中找到最小 x 和 y 值的最佳方法?

python - Matplotlib 和 Ipython 笔记本 : Displaying exactly the figure that will be saved

python - 在 import 语句中使用文件路径 python