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

Python质因数分解程序运行结果异常,求优化修复方案

代码问题分析
  • 两层循环逻辑冗余错误:外层遍历a的逻辑完全无效,反而打乱了因数匹配的顺序
  • 未除尽当前因数就跳转下一个值:找到可整除的b后仅做一次除法就继续遍历,没有反复除尽当前最小因数,导致后续的合数(如4)也能匹配剩余的num,被错误加入结果列表
  • 初始遍历上限to基于原始num计算,而分解过程中num会不断缩小,固定上限既无意义也会增加不必要的遍历开销
  • 变量名dict是Python内置字典类型的关键字,覆盖后会影响后续内置功能的正常使用
修复后代码
def factors(num):
    res = []
    # 从最小的质数2开始试除
    b = 2
    # 遍历上限取当前num的平方根即可,减少遍历次数
    while b * b <= num:
        # 反复除尽当前因数b
        while num % b == 0:
            res.append(b)
            num = num // b
        b += 1
    # 如果最后剩余的num大于1,说明本身是质数,加入结果
    if num > 1:
        res.append(num)
    print(res)

factors(2*2*2*2*2*2*2*2*2*2*2*2*2)

运行后输出:

[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]

可覆盖所有质因数分解场景,符合预期效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 06:24:04