探索模运算世界的交互式可视化教程
在数论中,同余关系是一种基本的等价关系。如果两个整数 a 和 b 除以同一个正整数 n 所得到的余数相同,那么我们就称 a 和 b 对于模 n 同余。
其数学符号表示为:
a ≡ b (mod n)
这等价于说:n 能够整除 a 与 b 的差,即 (a - b) 是 n 的整数倍。
在数轴上,同余的数落在模 n 的相同“位置”上。
说明:数轴上标记了 0 到 n-1 的位置点。如果 a 和 b 同余,它们将被映射到同一个高亮的位置点。
想象一个有 n 个刻度的时钟。同余的数会指向时钟上的同一点。
说明:圆环上均匀分布着 0 到 n-1 的点。如果 a 和 b 同余,代表它们的指针会指向同一个高亮的点。
同余关系具有类似等式的良好性质,这使得模运算非常有用。
如果 a₁ ≡ b₁ (mod n) 且 a₂ ≡ b₂ (mod n),那么:
a₁ + a₂ ≡ b₁ + b₂ (mod n)
例如 (mod 5): 7 ≡ 2, 8 ≡ 3 ⇒ 7+8 = 15 ≡ 0, 2+3 = 5 ≡ 0.
如果 a₁ ≡ b₁ (mod n) 且 a₂ ≡ b₂ (mod n),那么:
a₁ - a₂ ≡ b₁ - b₂ (mod n)
例如 (mod 5): 17 ≡ 2, 8 ≡ 3 ⇒ 17-8 = 9 ≡ 4, 2-3 = -1 ≡ 4.
如果 a₁ ≡ b₁ (mod n) 且 a₂ ≡ b₂ (mod n),那么:
a₁ · a₂ ≡ b₁ · b₂ (mod n)
例如 (mod 5): 7 ≡ 2, 8 ≡ 3 ⇒ 7×8 = 56 ≡ 1, 2×3 = 6 ≡ 1.
如果 a ≡ b (mod n),那么对于任意正整数 k:
ak ≡ bk (mod n)
例如 (mod 5): 7 ≡ 2 ⇒ 7³=343 ≡ 3, 2³=8 ≡ 3.
如果 a ≡ b (mod n) 且 b ≡ c (mod n),那么:
a ≡ c (mod n)
例如 (mod 3): 8 ≡ 2, 2 ≡ 5 ⇒ 8 ≡ 5.
如果 a ≡ b (mod n),那么对于任意整数 c:
a · c ≡ b · c (mod n)
例如 (mod 4): 7 ≡ 3, c=5 ⇒ 7×5=35 ≡ 3, 3×5=15 ≡ 3.
选择一个性质,输入满足前提条件的数值,观察结论是否成立。
一元一次同余方程是最基本的一种同余方程,其一般形式为:
a ⋅ x ≡ b (mod n)
其中 a, b, n 是已知的整数 (n > 1),而 x 是我们要求解的未知整数。
该方程 有解 的充要条件是:a 和 n 的最大公约数 d = gcd(a, n) 必须能够整除 b(记作 d | b)。
d 不能整除 b,则方程 无解。d 能整除 b,则方程恰好有 d 个模 n 意义下不同的解。这些解构成一个模 n/d 的完全剩余系。输入方程 a ⋅ x ≡ b (mod n) 的系数:
错误! 方程 ax ≡ b (mod n) 并非总有解。必须满足 gcd(a, n) 能整除 b 这个条件。
反例: 2x ≡ 1 (mod 4) 无解,因为 gcd(2, 4) = 2,而 2 不能整除 1。
不一定! 如果 d = gcd(a, n) > 1 且方程有解,那么它将有 d 个模 n 下不同的解。
例如: 4x ≡ 2 (mod 6)。这里 d = gcd(4, 6) = 2,2 能整除 2,所以有解。解为 x ≡ 2 (mod 3),这对应于模 6 下的解 x ≡ 2 和 x ≡ 5,共 2 个解。
警惕! 在模运算中,不能像普通代数那样随意进行除法。例如,4x ≡ 4 (mod 6) 不能直接两边除以 4 得到 x ≡ 1 (mod 6)。正确的解是 x ≡ 1 (mod 3) 或 x ≡ 4 (mod 3),即 x ≡ 1, 4 (mod 6)。除法需要通过乘以“模逆元”来实现,但逆元不一定存在。
注意! 比较或合并同余式时,必须确保它们的模数 n 是相同的。
例如: 5 ≡ 2 (mod 3) 和 5 ≡ 1 (mod 4) 都是正确的,但这并不意味着 2 和 1 在某个模下同余。
d = gcd(a, n) 个解?当 d | b 时,方程 ax ≡ b (mod n) 等价于求解一个更简单的方程:
(a/d) ⋅ x ≡ (b/d) (mod n/d)
令 a' = a/d, b' = b/d, n' = n/d。新方程是 a'x ≡ b' (mod n')。
由于 gcd(a', n') = gcd(a/d, n/d) = gcd(a, n) / d = d / d = 1,a' 和 n' 互质。这意味着 a' 在模 n' 下存在唯一的模逆元,因此新方程有且仅有一个解,记作 x ≡ x₀ (mod n')。
这个解 x₀ 意味着所有满足 x = x₀ + k ⋅ n' (其中 k 为任意整数)的 x 都是新方程的解。
现在,我们要把这些解放回原模数 n 的背景下。在模 n 的意义下,哪些 x₀ + k ⋅ n' 是不同的呢?
考虑 k = 0, 1, 2, ..., d-1。对应的解是:
x₀, x₀ + n', x₀ + 2n', ..., x₀ + (d-1)n'
这些解在模 n 下都是不同的。因为如果 x₀ + i ⋅ n' ≡ x₀ + j ⋅ n' (mod n) 且 0 ≤ i < j < d,则 (j-i)n' 必须是 n 的倍数。但 n = d ⋅ n',所以 (j-i)n' 是 dn' 的倍数,意味着 j-i 是 d 的倍数。然而 0 < j-i < d,这是不可能的。
当 k = d 时,x₀ + d ⋅ n' = x₀ + n ≡ x₀ (mod n),解开始重复。
因此,恰好有 d 个模 n 下不同的解。
1. d = gcd(4, 6) = 2.
2. d | b (2 | 2) ✓.
3. 简化方程:(4/2)x ≡ (2/2) (mod 6/2) ⇒ 2x ≡ 1 (mod 3).
4. 求解 2x ≡ 1 (mod 3)。 2 的模 3 逆元是 2 (因为 2*2=4 ≡ 1 mod 3)。所以 x ≡ 1 * 2 ≡ 2 (mod 3)。 x₀ = 2。
5. n' = n/d = 6/2 = 3.
6. 两个解 (d=2) 是:
x₀ + 0*n' = 2 + 0*3 = 2. 解为 x ≡ 2 (mod 6).x₀ + 1*n' = 2 + 1*3 = 5. 解为 x ≡ 5 (mod 6).最终解集为 {2, 5} (mod 6)。
一群人围成一圈报数,从 1 报到 m,报到 m 的人出局,然后从下一个人继续从 1 开始报数,直到剩下最后一个人。这个问题(约瑟夫环问题)的解可以通过模运算来分析。
中国剩余定理 (Chinese Remainder Theorem, CRT) 提供了一种求解一元线性同余方程组的方法。
该定理最初记载于中国古代数学著作《孙子算经》中,形式如下:
"今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?"
用现代数学语言描述,就是求解同余方程组:
x ≡ 2 (mod 3)
x ≡ 3 (mod 5)
x ≡ 2 (mod 7)
CRT 告诉我们,如果模数 n₁, n₂, ..., n<0xE2><0x82><0x99> 两两互质,那么形如:
x ≡ a₁ (mod n₁)
x ≡ a₂ (mod n₂)
...
x ≡ a<0xE2><0x82><0x99> (mod n<0xE2><0x82><0x99>)
的同余方程组,在模 N = n₁ × n₂ × ... × n<0xE2><0x82><0x99> 的意义下有唯一解。
CRT 不仅有理论价值,在密码学、编码理论和计算机算法中都有重要应用。