线性同余方程

数学 / 数论

本地源文件:docs/math__number-theory__linear-equation.md

线性同余方程

本文讨论线性同余方程的求解.

基本概念

设 𝑎,𝑏,𝑛a,b,n 为整数,𝑥x 为未知数,那么,形如

𝑎𝑥≡𝑏(mod𝑛)ax≡b(modn)

的方程称为 线性同余方程 (linear congruence equation).

求解线性同余方程,需要找到区间 [0,𝑛 −1][0,n−1] 中 𝑥x 的全部解.当然,将它们加减 𝑛n 的任意倍数,依然是方程的解.在模 𝑛n 的意义下,这些就是该方程的全部解.

本文接下来介绍了两种求解线性同余方程的思路,分别利用了逆元和不定方程.对于一般的情形,逆元和不定方程的求解都需要用到 扩展欧几里得算法,因此,这两种思路其实是一致的.

用逆元求解

首先,考虑 𝑎a 和 𝑛n 互素的情形,即 gcd(𝑎,𝑛) =1gcd(a,n)=1 的情形.此时,可以计算 𝑎a逆元 𝑎−1a−1,并将方程两边同乘以 𝑎−1a−1,这就得到方程的唯一解:

𝑥≡𝑏𝑎−1(mod𝑛).x≡ba−1(modn).

紧接着,考虑 𝑎a 和 𝑛n 不互素的情形,即 gcd(𝑎,𝑛) =𝑑 >1gcd(a,n)=d>1 的情形.此时,原方程不一定有解.例如,2𝑥 ≡1(mod4)2x≡1(mod4) 就没有解.因此,需要考虑两种情形:

  • 当 𝑑d 不能整除 𝑏b 时,方程无解.对于任意的 𝑥x,方程左侧 𝑎𝑥ax 都是 𝑑d 的倍数,但是方程右侧 𝑏b 不是 𝑑d 的倍数.因此,它们不可能相差 𝑛n 的倍数,因为 𝑛n 的倍数也一定是 𝑑d 的倍数.因此,方程无解.
  • 当 𝑑d 可以整除 𝑏b 时,可以将方程的参数 𝑎,𝑏,𝑛a,b,n 都同除以 𝑑d,得到一个新的方程:

𝑎′𝑥≡𝑏′(mod𝑛′).a′x≡b′(modn′).

其中,gcd(𝑎′,𝑛′) =1gcd(a′,n′)=1,也就是说,𝑎′a′ 和 𝑛′n′ 互素.这种情形已经在前文解决,所以,可以通过求解逆元得到方程的一个解 𝑥′x′.

显然,𝑥′x′ 也是原方程的一个解.但这并非原方程唯一的解.由于转化后的方程的全体解为

{𝑥′+𝑘𝑛′:𝑘∈𝐙}.{x′+kn′:k∈Z}.

这些解中落在区间 [0,𝑛 −1][0,n−1] 的那些,就是原方程在区间 [0,𝑛 −1][0,n−1] 中的全部解:

𝑥≡(𝑥′+𝑘𝑛′)(mod𝑛),𝑘=0,1,⋯,𝑑−1.x≡(x′+kn′)(modn),k=0,1,⋯,d−1.

总结这两种情形,线性同余方程的 解的数量 等于 𝑑 =gcd(𝑎,𝑛)d=gcd(a,n) 或 00

用不定方程求解

线性同余方程等价于关于 𝑥,𝑦x,y二元一次不定方程

𝑎𝑥+𝑛𝑦=𝑏.ax+ny=b.

利用所引页面的讨论,方程有解当且仅当 gcd(𝑎,𝑛) ∣𝑏gcd(a,n)∣b,而且该方程的一组通解是

𝑥=𝑥0+𝑡𝑛𝑑,𝑦=𝑦0−𝑡𝑎𝑑,x=x0+tnd,y=y0−tad,

其中,𝑑 =gcd(𝑎,𝑛)d=gcd(a,n) 是它们的最大公约数,𝑡t 是任意整数.

进而,线性同余方程的通解就是

𝑥≡(𝑥0+𝑡𝑛𝑑)(mod𝑛),𝑡∈𝐙.x≡(x0+tnd)(modn),t∈Z.

将 𝑥0x0 对 𝑛/𝑑n/d 取模就得到同余方程的最小(非负)整数解,也就是上文的 𝑥′x′.

参考实现

本节提供的参考实现可以得到同余方程的最小非负整数解.如果解不存在,则输出 −1−1

参考实现

C++Python

---|---

---|---

习题

本页面主要译自博文Модульное линейное уравнение первого порядка 与其英文翻译版 Linear Congruence Equation.其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0.内容有改动.

本页面最近更新: 2026/1/7 08:56:54,更新历史 发现错误?想一起完善?在 GitHub 上编辑此页! 本页面贡献者:Ir1d, Tiphereth-A, Enter-tainer, MegaOwIer, Xeonacid, Great-designer, Haohu Shen, iamtwz, ksyx, kZime, ouuan, stevebraveman, aofall, c-forrest, CoelacanthusHex, leoleoasd, Marcythm, Menci, Persdre, Phemon, shawlleyw, shuzhouliu, sshwy, StudyingFather, tsentau 本页面的全部内容在CC BY-SA 4.0SATA 协议之条款下提供,附加条款亦可能应用