You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何去除Pythagorean triples查找程序输出中的重复项?

去除毕达哥拉斯三元组重复项的解决方案

重复项出现的核心原因是原代码中i和e的循环范围完全重叠,导致同一组三元组会以(a,b,c)和(b,a,c)的形式重复生成。要解决这个问题,只需调整第二个循环的起始值,让e从i开始,保证i ≤ e,就能避免生成顺序颠倒的重复组合。

另外,原代码中使用list作为变量名并不合适——list是Python的内置类型,容易引发命名冲突,建议改为更具语义的名称,比如triples。

修改后的代码如下:

from math import sqrt

triples = []
for i in range(1, 101):
    # 让e从i开始,确保i ≤ e,避免重复生成颠倒的组合
    for e in range(i, 101):
        c_squared = i ** 2 + e ** 2
        c = sqrt(c_squared)
        if c.is_integer():
            triples.append((i, e, c))
            print(i, e, c)

额外优化提示

  • 用i ** 2代替pow(i, 2),在整数运算中更高效直观。
  • 将三元组以元组形式存入列表(如triples.append((i, e, c))),比逐个追加元素更便于后续批量处理。

内容的提问来源于stack exchange,提问作者Abdulmoty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 15:40:01