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

如何在Python中获取模运算的正确十进制结果(无额外库)

嵌入式Python中模逆元计算的解决方法

直接使用4292739359**(-1) % 4292739360得到科学计数法小数,是因为**(-1)是计算浮点数倒数,而非模运算下的乘法逆元。模逆元是满足(a * x) % m == 1的整数x,以下是无需额外库的两种解决方式:

方法1:使用内置pow函数的三参数形式

Python内置的pow(base, exp, mod)支持负指数参数,当exp=-1时,会直接计算base在模mod下的乘法逆元(要求base与mod互质)。执行以下代码即可得到正确结果:

result = pow(4292739359, -1, 4292739360)
print(result)  # 输出:4292739359

该方法完全依赖Python原生功能,无需额外依赖,运算效率高。

方法2:手动实现扩展欧几里得算法

若你的Python版本不支持pow的负指数参数,可通过扩展欧几里得算法手动求解模逆元,代码如下:

def mod_inverse(a, m):
    g, x, _ = extended_gcd(a, m)
    if g != 1:
        raise ValueError("该数在当前模下无逆元")
    return x % m

def extended_gcd(a, b):
    if a == 0:
        return (b, 0, 1)
    g, y, x = extended_gcd(b % a, a)
    return (g, x - (b // a) * y, y)

# 计算并输出结果
result = mod_inverse(4292739359, 4292739360)
print(result)  # 输出:4292739359

这段代码仅使用Python基础语法,无外部依赖,适用于所有Python版本。

额外说明

你的案例中,4292739359 = 4292739360 - 1,即该数等价于-1 mod 4292739360,而(-1) * (-1) = 1 ≡ 1 mod 4292739360,因此它的逆元就是自身,这也是结果为4292739359的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:40:43