On the Inversion Modulo a Power of an Integer

本文提出了两种通用算法:一种基于小学乘法思想,适用于计算任意互质整数 aankn^k 的模逆,并能利用计算机架构特性(如 n=264n=2^{64})显著提升效率;另一种则是对 Dumas 和 Hurchalla 针对 p2sp^{2^s} 模数的 Hensel 提升方法的推广,使其适用于任意整数 n>1n>1n2sn^{2^s} 模数情形。

Guangwu Xu, Yunxiao Tian, Bingxin Yang

发布于 2026-03-05
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文主要解决了一个在计算机数学中非常基础但又很棘手的问题:如何快速找到一个数的“倒数”(逆元),而且是在一个特殊的“模”运算环境下。

为了让你轻松理解,我们可以把这篇论文的内容想象成**“在特殊的数字世界里,如何快速找到一把万能钥匙”**。

1. 背景:什么是“模运算”和“逆元”?

想象你有一个巨大的时钟,但这个时钟不是 12 小时制的,而是 nkn^k 小时制的(比如 $10^6小时,或者 小时,或者 2^{64}$ 小时)。

  • 模运算(Modulo):就是在这个时钟上转圈。比如 $13 \pmod{12}$ 就是 1,因为转了一圈多 1 小时。
  • 逆元(Inverse):在普通数学里,2 的倒数是 0.5(因为 $2 \times 0.5 = 1)。但在时钟世界里,没有小数。我们找的是另一个整数)。但在时钟世界里,没有小数。我们找的是另一个整数 x,使得,使得 a \times x$ 在时钟上刚好转回起点(也就是余数为 1)。
    • 比如:在 12 小时时钟上,5 的逆元是 5,因为 $5 \times 5 = 25$,25 除以 12 余 1。

为什么要找这个?
在现代密码学(如 RSA 加密、区块链)中,计算机需要疯狂地做这种“找逆元”的操作。如果找得慢,整个系统就会卡死。所以,越快越好

2. 以前的方法:要么太死板,要么太复杂

在论文发表之前,科学家们主要有两种找钥匙的方法:

  • 方法 A(Koç 算法)

    • 适用场景:只能处理时钟是质数(如 2, 3, 5, 7...)的幂次方(比如 $2^{64}5^{100}$)。
    • 特点:像是一个精密的瑞士军刀,步骤很简洁,每一步只做“加法”和“右移”(相当于除以 2)。
    • 缺点:如果时钟的基数不是质数(比如是 10,或者 12),这个方法就失效了。
  • 方法 B(Hensel 提升法/Dumas & Hurchalla)

    • 适用场景:也是针对质数幂,特别是 $2^s$(计算机最擅长的二进制)。
    • 特点:像是一个“倍增器”。先算出一个小范围的钥匙,然后像滚雪球一样,每次把范围扩大一倍($2 \to 4 \to 8 \to 16$),直到覆盖整个时钟。
    • 缺点:虽然快,但依然被限制在“质数幂”这个框架里。

3. 这篇论文的两大贡献:更通用的“万能钥匙”

作者 Guangwu Xu 和他的团队提出了两个新想法,让找钥匙变得更通用、更灵活

贡献一:像“小学数学乘法”一样找逆元(通用版)

  • 核心思想:作者发现,找逆元的过程,其实和我们小时候学的竖式乘法(Schoolbook Multiplication)是一模一样的,只是方向反过来了。
  • 比喻
    • 想象你在做乘法竖式,从右往左一位一位地算。
    • 以前的算法像是在解复杂的方程组,需要很多步骤。
    • 新算法则是直接利用计算机的**“进位”机制**。就像你算 $99 \times 99$ 时,个位满 10 进 1 一样,新算法利用这个“进位”来一步步修正答案。
  • 厉害在哪里?
    • 不再挑剔基数:以前的算法要求时钟必须是质数(如 2, 5)。新算法说:“不管你的时钟是 10 进制、12 进制,还是 64 位计算机原生的 $2^{64}$,我都能算!”
    • 利用硬件优势:现代电脑最擅长处理 64 位($2^{64}$)甚至 128 位的数字。新算法直接利用电脑内部的“大数字加法器”,就像用大卡车运货,比用小推车(以前的算法)快得多。
    • 实验结果:在测试中,新算法比以前的方法快了几十倍甚至上百倍

贡献二:把“倍增法”推广到任何数字(升级版)

  • 核心思想:作者把 Dumas 和 Hurchalla 的“倍增法”(先算小的,再翻倍)进行了数学上的推广
  • 比喻
    • 以前的倍增法只能处理“二进制”的倍增($2 \to 4 \to 8$)。
    • 新算法说:我们可以把这个逻辑套用到任何数字 nn 上。比如,我们可以从 nn 开始,跳到 n2n^2,再跳到 n4n^4,直到覆盖整个范围。
  • 意义:这打破了“必须是质数”的限制,让这种高效的倍增策略也能用在非质数的模运算上。

4. 总结:这对我们意味着什么?

你可以把这篇论文想象成给计算机算数系统升级了“变速箱”

  1. 以前:如果你要算一个复杂数字的逆元,计算机可能得用“手动挡”,一步步慢慢推,而且只支持特定的车型(质数模数)。
  2. 现在
    • 通用性:新算法像是一个全地形越野车,不管路面是沥青(质数)还是泥土(非质数),都能跑。
    • 速度:它利用了计算机硬件最擅长的“大数字加法”和“位移”操作,就像给车装上了涡轮增压
    • 应用:这意味着未来的加密通信、区块链交易、安全认证等需要大量数学运算的场景,会变得更快、更省电、更高效

一句话总结
这篇论文发明了一种更聪明、更通用的方法,利用计算机最擅长的“大数加法”和“进位”原理,让计算机在寻找“数字倒数”这件事上,从“步行”升级到了“高铁”速度,而且不再受限于特定的数字类型。