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

Project Euler Problem 23 Python代码输出错误原因求解

错误原因分析

  • 盈数收集范围设置错误
    你仅遍历了1~14061的数筛选盈数,但大于14061的数也可以是盈数,只要满足「盈数 + 最小盈数12 ≤ 28123」即可,即盈数的遍历上限应该为28123 - 12 = 28111。你漏掉了14062~28111区间的所有盈数,导致大量两个盈数的和没有被纳入AbSums集合,最终统计的「无法表示为两盈数之和的数」远多于实际值,总和偏大。
  • 因数和计算使用浮点除法存在精度误差
    你的SumProper函数计算因数和时使用了/运算符,Python3中该运算符返回浮点数,当数值较大时,浮点数精度不足会导致计算结果偏差,转int后会得到错误的真因数和,直接导致部分盈数没有被识别,这也是你观察到14000之后盈数统计偏少的核心原因。计算整数除法应该使用//运算符避免浮点误差。

错误结果31531501的产生逻辑

你收集的盈数集合缺失了大量14000以上的盈数,同时因为浮点误差漏判了部分本应属于盈数的数值,最终AbSums集合的元素数量远少于实际值,很多本可以表示为两盈数之和的数没有被过滤掉,全部被计入了最终的总和,就得到了31531501这个错误结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:54:01