You need to enable JavaScript to run this app. Python统计整数因子个数的函数输出结果不符合预期
优惠活动
大模型
产品
解决方案
定价
更多

Python统计整数因子个数的函数输出结果不符合预期

问题根源

现有函数的统计逻辑是计算整数的全部正因子(包含1和整数自身)的总数量,和当前需求的统计规则完全不匹配。
对照测试用例的数值差可以确认:当前需求是统计排除1、排除整数自身的真因子个数,所有测试用例的预期值刚好等于原函数输出值减去2,比如:

  • 质数5、97除了1和自身没有其他可整除的数,所以结果为0
  • 6的非1、非自身可整除的数是2、3,共2个
  • 105的非1、非自身可整除的数是3、5、7、15、21、35,共6个
  • 999的非1、非自身可整除的数是3、9、27、37、111、333,共6个
修正方案

调整循环的遍历范围,直接跳过对1和整数自身的判断,核心修改点是把原来range(1, integer+1)的遍历范围,改成range(2, integer),从根源上避免把不需要统计的两个值计入结果:

def num_factors(integer):
    result = 0
    # 遍历范围取2到integer-1,自动排除1和整数本身
    for i in range(2, integer):
        if integer % i == 0:
            result += 1
    return result

print(num_factors(5))
print(num_factors(6))
print(num_factors(97))
print(num_factors(105))
print(num_factors(999))

运行修正后的代码,输出和预期完全一致:

0
2
0
6
6
优化提示

原逻辑的遍历方式效率较低,对于较大的整数会做大量无意义判断。可以将遍历上限调整为整数的平方根,遇到成对的因子时直接计数2个,进一步降低循环次数,该优化不影响最终的统计结果准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 23:24:03