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

Python除数计数代码性能优化求助:现有代码运行过慢无结果

优化计算除数个数的Python代码

原代码如下:

def f(n):
    count, k = 0, 1
    while k*k < n:
        if n%k == 0:
            count += 2
            k += 1

    return count

这段代码计算除数个数时耗时过长,需针对以下部分修改以优化性能:

  • 修复死循环逻辑:原代码仅在n%k == 0时执行k += 1,若k不是n的因数,k会一直保持不变,导致循环无限执行,这是耗时过长的核心原因。必须将k += 1移出if分支,确保每次循环k都递增。
  • 处理完全平方数的边界情况:原代码未考虑k*k == n的场景,此时k是n的平方根,只能算作1个除数,而非2个,这会导致结果错误,同时也会让循环的终止条件不完整。
  • 减少重复运算:循环中重复计算k*k会增加开销,可提前用math.isqrt(n)(Python 3.8+)算出n的整数平方根,直接遍历到该值,既高效又能避免整数溢出问题。
  • 改用更高效的循环结构:for循环在遍历固定范围时比while循环执行效率更高,代码可读性也更强。

优化后的示例代码:

import math

def count_divisors(n):
    if n < 1:
        return 0
    count = 0
    sqrt_n = math.isqrt(n)
    for k in range(1, sqrt_n + 1):
        if n % k == 0:
            count += 1 if k * k == n else 2
    return count

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:42:43