线性同余方程
线性同余方程把整数未知数放在模 的运算中求解,标准形式为 ,其中 , 是已知整数。它的意思是 整除 ;求解的对象是模 的剩余类,不是无穷多个形式不同的整数逐个罗列。
先检查最大公约数
取 。方程有解的充分必要条件是 。必要性很直接:若 ,那么 ,而 同时整除 ,故整除 。反过来,贝祖等式给出整数 使 。若 ,两边乘以 ,便有 ,所以 是解。这一推导同时告诉我们如何用扩展欧几里得算法算出一个解。
当 时,可把方程中的 同除以 ,得到 若 ,由于 , 在模 下有模逆元,约化方程恰有一个模 的解 。若 ,即 ,原方程只问 :条件成立时全部整数都是解,可取 作为模 1 的代表,不必谈模 1 的逆元。回到原模数,全部 个不同剩余类都是 。当 时,原方程模 恰有一个解。
解的个数也可以直接从差值看出来。若 与 都是原方程的解,则 ,即 。由于 与 互素,可约去 ,得 。所以解之间的间距恰按 的倍数变化;从 开始每次加 ,加到第 次才回到同一个模 的剩余类。
算例:两个解与无解
求 。因 且 ,先约为 。模 7 下 ,所以 ;模 14 的两个解是 。检验:,。若把右侧换成 9,,就没有解。
这里不能从 直接“把两边除以 6”并保持模 14,因为 6 与 14 不互素,6 在该模数下没有逆元。正确的约去公因数会同时改变模数。这与普通整数等式的除法区别很大,也是解题时最容易漏掉多个解的地方。
整数方程与同余方程
方程 还可写成 ,其中 都是整数。这样它成为一个二元一次丢番图方程;贝祖等式立即解释可解条件 。不过两者的答案形式不同:整数方程会列出无限组 ,同余问题只把 按模 不同的剩余类列出。回到 ,取 时有 ,因 ;取 时有 ,因 。两个整数解对应前面两个不同的模 14 类。
自己再试 。先算 ,右端可被 3 整除;约为 。模 7 下 ,故 ,回到模 21 得 。任选一个代入,如 ;另两类同样成立。若把右端改成 10,因 ,不必继续求逆元即可判无解。
约去系数的陷阱
以 为例,直接把两边除以 2 却仍写成 ,只留下 ,遗漏了 。正确做法是同时把模数从 6 除以 2,得到 ;在模 6 下,这一类分成 两类。核验 、。只有 时, 才能在保持模数 不变的条件下约去。
再看一个解数较多的练习:。先算 ,于是约为 ;由于 ,得到 。把 4 每次加 5、直到模 35 开始重复,得到 共七个解。取两端检查:,。这里不需要逐个试遍 0 到 34;先检查公约数,既决定能否求解,也预告解的个数。
处理负系数时可先换成同余的非负代表,例如 与 是同一方程,因为 。但这种替换只改变系数写法,不改变模数;它与上一段的“除以公因数并同时缩小模数”是两种不同操作。
把右侧取成零,还可得到一个简洁推论: 的模 解恰有 个。它们从 开始,每次相差 。例如 的解是 两类,而不是只剩零类。这个齐次方程的解数也能用来检查非齐次答案:若 是 的一个解,则每个其他解都可写成 加上一个齐次方程的解;反之这样相加必仍满足原方程。