探索模运算世界的交互式可视化教程
在数论中,同余关系是一种基本的等价关系。如果两个整数 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 不仅有理论价值,在密码学、编码理论和计算机算法中都有重要应用。