离散数学/模运算
我们已经在数论中考虑过模和模运算,但是在这个部分我们将更深入地了解模运算。
为了复习,如果您选择的话,您应该回顾数论中的内容。
当我们谈到与模运算相关的联立方程时,我们指的是以下形式的一组方程的联立解
- x ≡ a1 (mod m1)
- :
- :
- x ≡ ak (mod mk)
我们将考虑两种主要方法,逐次替换和中国剩余定理。
逐次替换法是指我们利用模的定义来重写这些联立方程,然后进行逐次替换。
用一个例子来激发这个想法可能会更好。
例:使用逐次替换法解 3x ≡ 10 (mod 19) 和 x ≡ 19 (mod 21)。
首先
- 3x ≡ 10 (mod 19)
在Z19中找到3的逆元;3-1=-6,然后
- x ≡ -60 (mod 19)
- x ≡ 16 (mod 19)
- x = 16 + 19j ∃ j∈Z (*)
代入第二个方程
- (16+19j) ≡ 19 (mod 21)
- 19j ≡ 3 (mod 21)
在Z21中找到19的逆元;19-1=10
- j = 30 (mod 21)
- j = 9 (mod 21)
写成等价形式
- j = 9 + 21k ∃ k∈Z
将j代回(*)
- x = 16 + 19(9+21k)
- x = 187+399k
写回第一种形式
- x ≡ 187 (mod 399)
这就是我们的解。
中国剩余定理是一种解联立线性同余方程的方法,当模数互素时。
给定方程
- x ≡ a1 (mod m1)
- :
- :
- x ≡ ak (mod mk)
将模数相乘,即 N=m1m2...mk,然后写 n1=N/m1, ..., nk=N/mk。
然后我们令 yi 为 ni 模 mi 的逆元,对于所有的 i,所以 yini=1 模 mi。
我们的解将是
- x ≡ a1y1n1+...+akyknk (mod N)
要理解为什么这有效,请考虑 x 模 mk 取什么值。项 akyknk 模 mk 等于 ak,因为 yknk=1 模 mk,并且所有项 ajyjnj 模 mk 等于零,因为当 mk 是 nj 的因数。
中国剩余定理具有极大的实际应用,因为如果我们希望解出一个模 M 的方程,对于某个很大的 M,我们可以将其分解成模 p 的方程,其中 p 是 M 的每个素因数,并使用 CRT 获得模 M 的解。
本节讨论的是模某个模数的数的幂。我们寻找计算
- ab (mod m)
的有效方法。如果我们尝试用普通方法计算 - 通过计算ab然后取模 - 这将花费大量时间。然而,模运算背后的某些理论允许我们使用一些捷径。
我们将研究其中的一些以及相关的理论。
费马小定理使我们能够了解ab (mod m) 等于 1 的情况。这在反驳素数性方面有应用。
它指出
- 如果 p 是素数,且 gcd(a,p)=1,则在Zp中
- ap-1=1。
例如,1310=1 在Z11中。
如果在Zn中,我们可以将某些元素写成某个元素的幂吗?这在理论上是可能的。
让我们看看Z3。
- 20=1
- 21=2
- 22=1
元素{1,2}实际上构成:Z3*。
一般来说,我们有
- 如果p是素数,则存在一个元素g∈Zp*,使得Zp*中的每个元素都是g的幂。
我们可以用阶的概念以不同的方式表达这个想法。我们将a ∈ Zn* 的阶表示为最小的整数k,记为 On(a),使得
- ak=1 在Zn中。
例如,On(-1)=2 对于所有 n 除了 2,因为
- (-1)2=1
除了 n = 2 时,因为在这个域中 -1 = 1 并且因此阶为 1。
注意如果 gcd(a,n)≠1,也就是说,a ∉ Zn*,则阶没有定义。
阶满足一些性质,其中第一个最初由拉格朗日证明
如果 p 是素数,gcd(a,p)=1,
- Op(a) 整除 p-1
- a 是本原元素当且仅当 Op(a)=p-1
根据以上事实,我们可以很容易地找到Zp中p > 2 的本原元素。
利用以上事实,我们只需要检查a(p-1)/pi=xi 在Zp中是否成立,对于所有的i,其中pi是p-1的质因子。如果任何一个xi等于1,则a不是本原元;如果所有xi都不等于1,则a是本原元。
示例: 找到Z11中的本原元。
尝试2。p-1 = 10 = 2 . 5 检查
- 210/2=25=10
- 210/5=22=4
两者都不等于1,因此我们可以说2是Z11中的本原元。
根据以上内容,回答以下问题。(偶数编号问题的答案在后面)
- 4 在Z13中是本原元吗?
- 5 在Z23中是本原元吗?
- 找到Z5中的一个本原元。
- 找到Z19中的一个本原元。
- 2. 是:在Z23中,(23-1)=2*11,并且522/11=2,522/2=22,然后522=1。没有更小的基数能给出这个结果。
- 4. 2. 检查:(19-1) 有不同的质因子 2 和 3。在Z19中,218/2≠1 并且 218/3≠1,但 218=1,所以 2 是本原元。
欧拉函数是一个特殊的函数,它允许我们推广上述费马小定理。
它定义为
- φ(n) = |Zn*|
- =|{a∈Z|1 ≤ a ≤ n 并且 gcd(a,n) = 1}|
- 即在Zn中具有逆元的元素的数量
我们从前面的定义中得到以下结果。
- φ(p) = p - 1
- φ(pk) = pk-pk-1
- φ(mn)=φ(m)φ(n) 对于 gcd(m,n)=1
- 对于任何整数 n,其每个因子的欧拉函数值的总和等于 n。
用符号表示: .
2 的证明: 在Zpk中有pk个元素。Zpk中不可逆的元素是p的倍数,它们有pk-1个:p,2p,3p,…,(pk-1-1)p,pk。从可逆元素中移除不可逆元素,剩下pk-pk-1个。 ∎
1、2 和 3 的推论: 如果n有不同的质因子(即不计算幂)pi,对于 i=1,...,r,我们有
例如
- 16=24,所以 φ(16)=(16)(1-1/2)=16/2=8
- φ(11)=(11)(1-1/11)=(11)(10/11)=10
- (从前面确认 11 是素数,所以 φ(11)=11-1=10).
3 的证明: 我们可以使用中国剩余定理的一个特例来证明这个等式,其中中国剩余定理现在只是一个包含两个同余式的系统,即
- x == a1 (mod m)
- x == a2 (mod n)
(记住,中国剩余定理在这里适用,因为 m 和 n 在等式中被假设为互质的)。
注意 a1 可以取 m 个值(从 0 到 m-1),a2 可以取 n 个值(从 0 到 n-1)。还要注意,对于每个 m*n 个 (a1, a2) 元组,都存在一个唯一的解 x,它严格小于 m*n。此外,对于每个严格小于 m*n 的 x,存在一个唯一的元组 (a1, a2) 验证同余式系统(这两个断言是中国剩余定理的一部分:同余式系统的解在模 m*n 下是唯一的)。
有了这个双射唯一性属性,证明就很简单了。遍历每个 x,从 0 到 m*n-1,并证明如果 x 是 m*n 的欧拉函数(即 gcd (x,m*n) = 1),则 a1 是 m 的欧拉函数,a2 是 n 的欧拉函数。此外,你还必须证明,如果 a1 和 a2 分别是 m 和 n 的欧拉函数,那么 x 必须是 m*n 的欧拉函数。
如果 gcd (x,m*n) = 1,那么根据贝祖等式,存在整数 X 和 Y 使得 x*X + m*n*Y = 1。此外,我们有
- x = a1 + k*m
- x = a2 + q*n
因此,a1*X + m*(k + n*Y) = 1,
这应该是 a1*X + m*(k*X + n*Y) = 1 ??
所以 gcd (a1,m) = 1,因此 a1 是 m 的欧拉函数。类似地证明 a2 是 n 的欧拉函数。
证明另一个方向非常类似,它需要一些简单的替换代数。
我们证明了什么?在上面,我们证明了,对于 m*n 的每个欧拉函数 x,都存在一个唯一的元组,一个是 m 的欧拉函数,另一个是 n 的欧拉函数。此外,对于 m 的欧拉函数元组和 n 的欧拉函数元组,都存在一个唯一的 m*n 的欧拉函数。因此,phi(m*n) = phi(m)*phi(n)。
4 的证明: 令 Q(g) 是所有介于 1 和 n 之间(包括 1 和 n)的整数的集合,使得 gcd(x,n) = g。Q(g) 非空当且仅当 g 整除 n。如果 g 不整除 n,那么就很难找到一个 x,使得 g 是 x 和 n 的最大公约数。其次,如果 x 属于给定 g 的 Q(g),那么它就不可能属于另一个 Q(...),因为如果 n 固定,那么根据最大公约数的定义,gcd(x,n) 是唯一的。第三,对于 1 和 n 之间的每个 x(包括 1 和 n),都存在一个 g 使得 gcd (x,n) = g(在 "最坏" 的情况下,它是 1)。把这三点放在一起,这些属性意味着所有 Q(g) 集合(对于 n 的每个因数 g)的并集(它们是成对互斥的)是集合 {1,2,3,...,n}。因此,每个 Q(g) 的基数之和等于 n。
现在我们证明 |Q(g)| = φ(n/g)。
一个方向:设 x 是某个 g 的 Q(g) 中的任意成员。因此,我们有 gcd (x,n) = g => gcd (x/g, n/g) = 1 => x/g 属于与 n/g 互质的数字集合(其基数当然是 φ(n/g))。对于不同的 x,两个值 x1/g 和 x2/g 是不同的。因此,对于 Q(g) 中的每个 x,都存在一个与之对应的唯一 x/g 属于与 n/g 互质的数字集合。
另一个方向:设 x 是与 n/g 互质的数字集合中的任意成员。这意味着 gcd (x,n/g) = 1 => gcd (xg,n) = g => xg 属于 Q(g)。对于不同的 x,两个值 x1g 和 x2g 是不同的。因此,对于与 n/g 互质的数字集合中的每个 x,都存在一个与之对应的唯一 xg 属于 Q(g)。
因此,|Q(g)| = φ(n/g)。
现在我们可以推广费马定理,使其超越Zn。
欧拉定理说
- 如果 a ∈ Zn*,在 Zn*中,
- aφ(n)=1
- 等价于如果 gcd(a,n)=1,
- aφ(n)≡1 (mod n)
示例: 找到Z14中的 3216。我们需要首先计算 φ(14)=φ(7)φ(2)=(7-1)(2-1)=6。然后将指数写成:216 = 6 × 36 所以:3216=(36)36
但欧拉定理告诉我们 36=1 在 Z14 中(即,模 14),因为 3φ(14)=1 在 Z14 中,如上所示。所以我们有:3216=136=1。
当欧拉定理或费马定理在计算高次幂时对我们失效时,有一种方法可以将指数分解,以便计算仍然很容易。
让我们通过一个例子来作为动机。
示例。 528 在 Z4 中。
首先将 28 写成二进制 = (11100)2 = 24+23+22 = 16 + 8 + 4
现在 528 = 516+8+4 = 516 58 54 现在将这些 2 的幂重写为重复的指数
- (((52)2)2)2 × ((52)2)2 × (52)2
当你计算每个指数时,每次都对 4 取模。
鉴于上述,计算以下幂。(偶数题答案如下)
- 312 (mod 13)
- 242 (mod 43)
- 6168 (mod 30)
- 2252 (mod 19)
- 261 (mod 22)
- 813 (mod 5)
- 1110 (mod 11) (棘手!)
- 2. 由于 gcd(2,43)=1 且指数比模数小 1,使用费马定理 - 答案是 1
- 4. 观察 φ(19)=18 且 18|252。252/18=14。然后将指数分解为 218×14=(218)14=1。
- 6. 使用快速平方求幂:答案是 3