MathLabs

9 年级

一次不定方程

只寻求整数解的一次方程。

直观直觉:用两种面额恰好凑出一个金额

假设你只有 33 元和 55 元的硬币,想恰好付 88 元。你需要每种硬币各若干整数枚,也就是要在整数 x,y≥0x,y\ge 0 下求解 3x+5y=83x+5y=8——事实上 x=1,y=1x=1,y=1 满足,因为 3+5=83+5=8。一般性的问题“对哪些整数 a,b,ca,b,c,ax+by=cax+by=c 有整数解,又如何求出所有解?”正是一次不定方程理论。

斜率为 $-0.6$、截距为 $1.6$ 的直线,标出其经过的整数坐标格点。
直线 3x+5y=83x+5y=8 改写为 y=−0.6x+1.6y=-0.6x+1.6:整数解正是该直线经过的格点。

中学定义与整除判据

定义: 二元一次不定方程

对整数 a,b,ca,b,c(满足 (a,b)≠(0,0)(a,b)\neq(0,0))构成的方程 ax+by=cax+by=c,若寻求 x,y∈Zx,y\in\mathbb{Z} 的解 (x,y)(x,y),则称为一次不定方程。

ax+by=ca,b,c∈Z, (a,b)≠(0,0)ax+by=c\qquad a,b,c\in\mathbb{Z},\ (a,b)\neq(0,0)

并非任意 a,b,ca,b,c 都能使方程有解:2x+4y=72x+4y=7 无解,因为左边恒为偶数。准确的判据涉及 d=gcd⁡(a,b)d=\gcd(a,b):方程有整数解当且仅当 d∣cd \mid c。

d=gcd⁡(a,b)∣c  ⟺  ∃ x,y∈Z: ax+by=cd=\gcd(a,b)\mid c \iff \exists\, x,y\in\mathbb{Z}:\ ax+by=c
ax+by=cax+by=c 的可解性
条件是否有解?解集
d∣cd \mid c是无穷多解:x=x0+bdt, y=y0−adtx=x_0+\frac{b}{d}t,\ y=y_0-\frac{a}{d}t
d∤cd \nmid c否空集 ∅\emptyset

进阶定理与证明(超出课程范围)

定理: 裴蜀等式

对不全为 00 的整数 a,ba,b,存在整数 u,vu,v 使得 au+bv=gcd⁡(a,b)au+bv=\gcd(a,b)。

为什么成立?

它说明最大公约数不仅是“最大的公共因子”,而且确实可以表示为 aa 与 bb 的整数组合——这正是使 ax+by=cax+by=c 可解性判据成立的关键事实。

证明

考虑集合 S={au+bv:u,v∈Z}∩Z>0S=\{au+bv : u,v\in\mathbb{Z}\}\cap\mathbb{Z}_{>0},即 aa 与 bb 的所有严格正整数组合。由于 a,ba,b 不全为 00,SS 非空(含 ∣a∣|a| 或 ∣b∣|b|),由良序原理 SS 有最小元 d=au0+bv0>0d=au_0+bv_0>0。

证明 d∣ad\mid a:作带余除法 a=qd+ra=qd+r,0≤r<d0\le r<d。则 r=a−qd=a−q(au0+bv0)=a(1−qu0)+b(−qv0)r=a-qd=a-q(au_0+bv_0)=a(1-qu_0)+b(-qv_0) 本身就是 a,ba,b 的整数组合。若 r>0r>0,则 rr 属于 SS 且小于 dd,与最小性矛盾;故 r=0r=0,即 d∣ad\mid a。将 aa 换成 bb 做同样论证得 d∣bd\mid b。

由于 dd 是 aa 与 bb 的公约数,d≤gcd⁡(a,b)d\le \gcd(a,b)。反之,aa 与 bb 的任意公约数 ee 都整除 au0+bv0=dau_0+bv_0=d,故 e≤de\le d;取 e=gcd⁡(a,b)e=\gcd(a,b) 得 gcd⁡(a,b)≤d\gcd(a,b)\le d。

结合两个不等式得 d=gcd⁡(a,b)d=\gcd(a,b),而由构造 d=au0+bv0d=au_0+bv_0,这正是 u=u0,v=v0u=u_0,v=v_0 时的裴蜀等式。

ax+by=cax+by=c 有整数解当且仅当 d∣cd \mid c(其中 d=gcd⁡(a,b)d=\gcd(a,b));此时,若 (x0,y0)(x_0,y_0) 是一个解,则所有整数解恰好是 x=x0+bdt,  y=y0−adt  (t∈Z)x=x_0+\dfrac{b}{d}t,\ \ y=y_0-\dfrac{a}{d}t\ \ (t\in\mathbb{Z})。

为什么成立?

它彻底解决了问题:一次整除检验就能判定可解性,一旦得到任意一个解,一个关于 tt 的单参数族就给出所有其余的解——无需猜测。

证明

(⇒\Rightarrow)若 (x,y)(x,y) 是整数解,则 d=gcd⁡(a,b)d=\gcd(a,b) 同时整除 axax 和 byby,故整除 ax+by=cax+by=c。因此 d∣cd \mid c 是必要条件。

(⇐\Leftarrow)设 d∣cd \mid c,记 c=dec=de。由裴蜀等式存在 u0,v0u_0,v_0 使 au0+bv0=dau_0+bv_0=d。两边乘以 ee 得 a(u0e)+b(v0e)=de=ca(u_0e)+b(v_0e)=de=c,故 (x0,y0)=(u0e, v0e)(x_0,y_0)=(u_0e,\,v_0e) 是一个整数解。这证明了可解性。

现固定一个解 (x0,y0)(x_0,y_0),设 (x,y)(x,y) 为任意另一个解。用 ax+by=cax+by=c 减去 ax0+by0=cax_0+by_0=c 得 a(x−x0)+b(y−y0)=0a(x-x_0)+b(y-y_0)=0,即 a(x−x0)=−b(y−y0)a(x-x_0)=-b(y-y_0)。两边除以 dd:ad(x−x0)=−bd(y−y0)\frac{a}{d}(x-x_0)=-\frac{b}{d}(y-y_0),由于 gcd⁡(a/d, b/d)=1\gcd(a/d,\,b/d)=1,因子 bd\frac{b}{d} 必整除 x−x0x-x_0(互素的标准推论:若 p∣mnp\mid mn 且 gcd⁡(p,m)=1\gcd(p,m)=1 则 p∣np\mid n)。故 x−x0=bdtx-x_0=\frac{b}{d}t,其中 tt 为某整数,代回得 y−y0=−adty-y_0=-\frac{a}{d}t。

反之,对任意整数 tt,将 x=x0+bdt, y=y0−adtx=x_0+\frac{b}{d}t,\ y=y_0-\frac{a}{d}t 代入 ax+byax+by 得 ax0+by0+t(abd−abd)=c+0=cax_0+by_0+t\left(\frac{ab}{d}-\frac{ab}{d}\right)=c+0=c,验证了每一对这样的数确实都是解。因此解集恰好是 x=x0+bdt,  y=y0−adt  (t∈Z)x=x_0+\dfrac{b}{d}t,\ \ y=y_0-\dfrac{a}{d}t\ \ (t\in\mathbb{Z})。

进阶实际应用与典型例题

求解 ax+by=cax+by=c 不仅是课堂练习:产生裴蜀系数的扩展欧几里得算法正是 RSA 密钥生成中求模逆元所用的方法,同样的格点推理也支撑着计算机图形学算法(如 Bresenham 画线算法)判断一条直线经过哪些整数像素的方式。

例题: 完全求解 3x+5y=83x+5y=8

求 3x+5y=83x+5y=8 的所有整数解,以及其中非负 xx 最小的解。

解答

运行欧几里得算法:5=1⋅3+25=1\cdot 3+2,3=1⋅2+13=1\cdot 2+1,2=2⋅1+02=2\cdot 1+0,故 gcd⁡(3,5)=1\gcd(3,5)=1,它整除 88,所以方程有解。

回代:1=3−1⋅2=3−1⋅(5−1⋅3)=2⋅3−1⋅51=3-1\cdot 2=3-1\cdot(5-1\cdot 3)=2\cdot 3-1\cdot 5。两边乘以 88:2⋅3⋅8−1⋅5⋅8=8⋅12\cdot 3\cdot 8-1\cdot 5\cdot 8=8\cdot 1,即 3⋅16+5⋅(−8)=83\cdot 16+5\cdot(-8)=8,得一个解 (x0,y0)=(16,−8)(x_0,y_0)=(16,-8)。

由 d=1d=1 时的通解定理,所有解为 x=16+5t, y=−8−3tx=16+5t,\ y=-8-3t,t∈Zt\in\mathbb{Z}。取 t=−3t=-3 得 x=16−15=1, y=−8+9=1x=16-15=1,\ y=-8+9=1,与硬币例子吻合。

在所有 tt 中,x=16+5t≥0x=16+5t\ge 0 在 t≤−4t\le -4(给出 x=−4x=-4)时不再成立,故非负 xx 最小时对应 t=−3t=-3:(x,y)=(1,1)(x,y)=(1,1)。

例题: RSA 密钥生成:求模逆元

在 RSA 中,公钥指数 e=7e=7,φ(n)=40\varphi(n)=40,求满足 7d≡1(mod40)7d\equiv 1\pmod{40} 的私钥指数 dd。

解答

同余式 7d≡1(mod40)7d\equiv 1\pmod{40} 等价于关于某整数 kk 的一次不定方程 7d−40k=17d-40k=1。

欧几里得算法:40=5⋅7+540=5\cdot 7+5,7=1⋅5+27=1\cdot 5+2,5=2⋅2+15=2\cdot 2+1,2=2⋅1+02=2\cdot 1+0,故 gcd⁡(7,40)=1\gcd(7,40)=1,确认逆元存在。

回代:1=5−2⋅2=5−2⋅(7−1⋅5)=3⋅5−2⋅7=3⋅(40−5⋅7)−2⋅7=3⋅40−17⋅71=5-2\cdot 2=5-2\cdot(7-1\cdot 5)=3\cdot 5-2\cdot 7=3\cdot(40-5\cdot 7)-2\cdot 7=3\cdot 40-17\cdot 7。故 7⋅(−17)+40⋅3=17\cdot(-17)+40\cdot 3=1,得 d≡−17(mod40)d\equiv -17\pmod{40}。

化到标准范围:d≡−17+40=23(mod40)d\equiv -17+40=23\pmod{40}。验证:7×23=161=4×40+17\times 23=161=4\times 40+1,确认 d=23d=23 是此示例密钥正确的 RSA 私钥指数。

关于 d=gcd⁡(a,b)d=\gcd(a,b) 的哪个条件决定 ax+by=cax+by=c 是否有整数解?

裴蜀等式保证了哪些整数的存在?

若 (x0,y0)(x_0,y_0) 是 d=gcd⁡(a,b)d=\gcd(a,b) 下 ax+by=cax+by=c 的解,通解为 x=x0+bdtx=x_0+\frac{b}{d}t,则 y=y= ?

用于求解一次不定方程的扩展欧几里得算法,也是计算哪种密码学量的标准方法?

参考文献

  1. Wikipedia contributors (2024). Bézout's identity
  2. G. H. Hardy, E. M. Wright (2008). An Introduction to the Theory of Numbers