8.12.17 ACM-ICPC数学 数论 同余方程
定义
同余方程是关于未知数 𝑥x 的模 𝑚m 的一元方程,表示为: 𝑓(𝑥)≡0(mod𝑚)f(x)≡0(modm) 其中,𝑓(𝑥)=∑𝑖=0𝑛𝑎𝑖𝑥𝑖f(x)=∑i=0naixi,未知数 𝑥∈𝑍𝑚x∈Zm,𝑎𝑛≢0(mod𝑚)an≡0(modm) 则称其为 𝑛n 次同余方程。类似地可以定义同余方程组。
同余方程的求解
根据中国剩余定理,求解模合数 𝑚m 的同余方程可以转化为求解模素数幂次的情况。以下介绍素数幂模同余方程和素数模同余方程的相关理论。
素数幂模同余方程
假设模数 𝑚=𝑝𝑎m=pa(𝑝∈𝑃,𝑎∈𝑍>1p∈P,a∈Z>1),若 𝑥0x0 是方程 𝑓(𝑥)≡0(mod𝑝𝑎)f(x)≡0(modpa) 的解,则 𝑥0x0 是方程 𝑓(𝑥)≡0(mod𝑝𝑎−1)f(x)≡0(modpa−1) 的解。这启发我们通过较低的模幂次的解去构造较高的模幂次的解。我们有如下定理:
定理 1
对素数 𝑝p 和整数 𝑎>1a>1,取整系数多项式 𝑓(𝑥)=∑𝑖=0𝑛𝑎𝑖𝑥𝑖f(x)=∑i=0naixi(𝑝𝑎∤𝑎𝑛pa∤an),令 𝑓′(𝑥)=∑𝑖=1𝑛𝑖𝑎𝑖𝑥𝑖−1f′(x)=∑i=1niaixi−1 为其导数。令 𝑥0x0 为方程 𝑓(𝑥)≡0(mod𝑝𝑎−1)f(x)≡0(modpa−1) 的解,则:
-
若 𝑓′(𝑥0)≢0(mod𝑝)f′(x0)≡0(modp),则存在整数 𝑡t 使得 𝑥=𝑥0+𝑝𝑎−1𝑡x=x0+pa−1t 是方程 𝑓(𝑥)≡0(mod𝑝𝑎)f(x)≡0(modpa) 的解。
-
若 𝑓′(𝑥0)≡0(mod𝑝)f′(x0)≡0(modp) 且 𝑓(𝑥0)≡0(mod𝑝𝑎)f(x0)≡0(modpa),则对 𝑡=0,1,…,𝑝−1t=0,1,…,p−1,由式 (3) 确定的 𝑥x 均为方程 (4) 的解。
-
若 𝑓′(𝑥0)≡0(mod𝑝)f′(x0)≡0(modp) 且 𝑓(𝑥0)≢0(mod𝑝𝑎)f(x0)≡0(modpa),则不能由式 (3) 构造方程 (4) 的解。
证明
假设式 (3) 是方程 (4) 的解,即 𝑓(𝑥0+𝑝𝑎−1𝑡)≡0(mod𝑝𝑎)f(x0+pa−1t)≡0(modpa) 整理后可得 𝑓(𝑥0)+𝑝𝑎−1𝑡𝑓′(𝑥0)≡0(mod𝑝𝑎)f(x0)+pa−1tf′(x0)≡0(modpa) 于是 𝑡𝑓′(𝑥0)≡−𝑓(𝑥0)𝑝𝑎−1(mod𝑝)tf′(x0)≡−pa−1f(x0)(modp) 若 𝑓′(𝑥0)≢0(mod𝑝)f′(x0)≡0(modp),则关于 𝑡t 的方程 (5) 有唯一解 𝑡0t0,代入式 (3) 可验证其为方程 (4) 的解。 若 𝑓′(𝑥0)≡0(mod𝑝)f′(x0)≡0(modp) 且 𝑓(𝑥0)≡0(mod𝑝𝑎)f(x0)≡0(modpa),则任意 𝑡t 均能使方程 (5) 成立,代入式 (3) 可验证其均为方程 (4) 的解。 若 𝑓′(𝑥0)≡0(mod𝑝)f′(x0)≡0(modp) 且 𝑓(𝑥0)≢0(mod𝑝𝑎)f(x0)≡0(modpa),则方程 (5) 无解,从而不能由式 (3) 构造方程 (4) 的解。
由此,我们可以将素数幂模同余方程化归到素数模同余方程的情况。
素数模同余方程
设 𝑝∈𝑃p∈P,整系数多项式 𝑓(𝑥)=∑𝑖=0𝑛𝑎𝑖𝑥𝑖f(x)=∑i=0naixi,其中 𝑝∤𝑎𝑛p∤an,𝑥∈𝑍𝑝x∈Zp。
定理 2
若方程 𝑓(𝑥)≡0(mod𝑝)f(x)≡0(modp) 有 𝑘k 个不同的解 𝑥1,𝑥2,…,𝑥𝑘x1,x2,…,xk(𝑘≤𝑛k≤n),则: 𝑓(𝑥)≡𝑔(𝑥)∏𝑖=1𝑘(𝑥−𝑥𝑖)(mod𝑝)f(x)≡g(x)∏i=1k(x−xi)(modp) 其中 deg𝑔=𝑛−𝑘degg=n−k 且 [𝑥𝑛−𝑘]𝑔(𝑥)=𝑎𝑛[xn−k]g(x)=an。
证明
对 𝑘k 应用数学归纳法。
当 𝑘=1k=1 时,做多项式带余除法,有 𝑓(𝑥)=(𝑥−𝑥1)𝑔(𝑥)+𝑟f(x)=(x−x1)g(x)+r,其中 𝑟∈𝑍r∈Z。由 𝑓(𝑥1)≡0(mod𝑝)f(x1)≡0(modp) 可知 𝑟≡0(mod𝑝)r≡0(modp),从而 𝑓(𝑥)≡(𝑥−𝑥1)𝑔(𝑥)(mod𝑝)f(x)≡(x−x1)g(x)(modp)。
假设命题对 𝑘−1k−1 (𝑘>1k>1) 时的情况成立,现在设 𝑓(𝑥)f(x) 有 𝑘k 个不同的解 𝑥1,𝑥2,…,𝑥𝑘x1,x2,…,xk,则 𝑓(𝑥)≡(𝑥−𝑥1)ℎ(𝑥)(mod𝑝)f(x)≡(x−x1)h(x)(modp),进而有 (∀𝑖=2,3,…,𝑘),0≡𝑓(𝑥𝑖)≡(𝑥𝑖−𝑥1)ℎ(𝑥𝑖)(mod𝑝)(∀i=2,3,…,k),0≡f(xi)≡(xi−x1)h(xi)(modp) 从而 ℎ(𝑥)h(x) 有 𝑘−1k−1 个不同的解 𝑥2,𝑥3,…,𝑥𝑘x2,x3,…,xk,由归纳假设有 ℎ(𝑥)≡𝑔(𝑥)∏𝑖=2𝑘(𝑥−𝑥𝑖)(mod𝑝)h(x)≡g(x)∏i=2k(x−xi)(modp) 其中 deg𝑔=𝑛−𝑘degg=n−k 且 [𝑥𝑛−𝑘]𝑔(𝑥)=𝑎𝑛[xn−k]g(x)=an。
由此可得 𝑓(𝑥)≡𝑔(𝑥)∏𝑖=1𝑘(𝑥−𝑥𝑖)(mod𝑝)f(x)≡g(x)∏i=1k(x−xi)(modp),命题得证。
推论 1
对素数 𝑝p, (∀𝑥∈𝑍),𝑥𝑝−1−1≡∏𝑖=1𝑝−1(𝑥−𝑖)(mod𝑝)(∀x∈Z),xp−1−1≡∏i=1p−1(x−i)(modp) (Wilson 定理)(𝑝−1)!≡−1(mod𝑝)(p−1)!≡−1(modp)
定理 3(Lagrange 定理)
方程 𝑓(𝑥)≡0(mod𝑝)f(x)≡0(modp) 至多有 𝑛n 个不同解。
证明
假设 𝑓(𝑥)f(x) 有 𝑛+1n+1 个不同的解 𝑥1,𝑥2,…,𝑥𝑛+1x1,x2,…,xn+1,则由定理 2,对 𝑥1,𝑥2,…,𝑥𝑛x1,x2,…,xn 有 𝑓(𝑥)≡𝑎𝑛∏𝑖=1𝑛(𝑥−𝑥𝑖)(mod𝑝)f(x)≡an∏i=1n(x−xi)(modp) 令 𝑥=𝑥𝑛+1x=xn+1,则 0≡𝑓(𝑥𝑛+1)≡𝑎𝑛∏𝑖=1𝑛(𝑥𝑛+1−𝑥𝑖)(mod𝑝)0≡f(xn+1)≡an∏i=1n(xn+1−xi)(modp) 而右侧显然不是 𝑝p 的倍数,因此假设矛盾。
高次同余方程的求解方法
我们可以借助中国剩余定理将求解同余方程组转为求解同余方程,以及将求解模合数 𝑚m 的同余方程转化为求解模素数幂次的同余方程。之后我们借助定理 1 将求解模素数幂次的同余方程转化为求解模素数的同余方程。
结合模素数同余方程的若干定理,我们只需考虑方程 𝑥𝑛+∑𝑖=0𝑛−1𝑎𝑖𝑥𝑖≡0(mod𝑝)xn+∑i=0n−1aixi≡0(modp) 的求解,其中 𝑝p 是素数,𝑛<𝑝n<p。
我们可以通过将 𝑥x 代换为 𝑥−𝑎𝑛−1𝑛x−nan−1 来消去 𝑥𝑛−1xn−1 项,从而只需考虑方程 𝑥𝑛+∑𝑖=0𝑛−2𝑎𝑖𝑥𝑖≡0(mod𝑝)xn+∑i=0n−2aixi≡0(modp) 的求解,其中 𝑝p 是素数,𝑛<𝑝n<p。
- 若 𝑛=1n=1,则求解方法参见线性同余方程。
- 若 𝑛=2n=2,则求解方法参见二次剩余。
- 若方程可以化为 𝑥𝑛≡𝑎(mod𝑝)xn≡a(modp),则求解方法参见 𝑘k 次剩余。