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

如何优化计算大整数模幂的Python代码以提升运行速度

核心问题原因

你之前的所有写法都犯了同一个致命问题:先计算完整的g的a次方结果再取模。你给定的a是接近1e18的超大整数,直接计算g^a会得到一个有几十亿位的天文数字,无论是内存占用还是计算量都完全无法承受,运行速度当然会极慢。

另外你尝试的两种优化写法本身还有额外问题:

  • math.pow是浮点数运算接口,仅能处理精度有限的数值,传入大整数会直接丢失精度,得到的结果完全错误,而且你依然先计算了g**a,计算量和原写法没有任何区别
  • 自定义循环乘的写法相当于要循环1e18次,哪怕单次循环只需要1纳秒,跑完也需要几十年,完全没有实用性

最优解决方案

Python内置的pow函数原生支持三个参数的模幂调用形式pow(base, exp, mod),这个接口底层是C实现的快速模幂算法,时间复杂度仅为O(log exp),计算你给出的参数可以毫秒级出结果,代码如下:

g = 53710316114328094
a = 995443176435632644
n = 926093738455418579
print(pow(g, a, n))

运行后可以直接得到正确结果:55290382992861573

手动实现快速模幂(仅做原理参考)

如果你需要自己理解实现逻辑,可以参考如下Python版快速模幂写法,性能比内置版本稍差但也远快于你的原有写法:

def fast_mod_pow(base, exp, mod):
    result = 1
    base = base % mod
    while exp > 0:
        # 指数为奇数时乘入当前底数
        if exp % 2 == 1:
            result = (result * base) % mod
        # 底数平方,指数折半
        exp = exp >> 1
        base = (base * base) % mod
    return result

g = 53710316114328094
a = 995443176435632644
n = 926093738455418579
print(fast_mod_pow(g, a, n))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:57:01