模运算
除法定理
Z
=
{
⋯
,
−
1
,
0
,
1
,
⋯
}
\mathbb{Z}=\{\cdots,-1,0,1,\cdots\}
Z={⋯,−1,0,1,⋯}为整数集,对任何整数a和任何正整数n存在唯一整数q和r,满足
{
r
:
0
≤
r
<
n
,
r
∈
Z
}
\{r:0\le r<n,r\in \mathbb{Z}\}
{r:0≤r<n,r∈Z},且
a
=
q
n
+
r
a=qn+r
a=qn+r。称
q
=
⌊
a
/
n
⌋
q=\left \lfloor a/n \right \rfloor
q=⌊a/n⌋为除法的商,
⌊
⌋
\lfloor \rfloor
⌊⌋表示向下取整,
r
≡
a
m
o
d
n
r\equiv a \mod n
r≡amodn为除法的余数。
简单例子
19
m
o
d
11
≡
8
m
o
d
11
19\mod 11\equiv 8\mod11
19mod11≡8mod11
−
7
m
o
d
11
≡
4
m
o
d
11
-7 \mod 11\equiv 4\mod11
−7mod11≡4mod11
模运算的好处:一些程序进行线性运算的时候,由于存储空间大小是固定的,可能存在结果溢出的情况,模运算可以将
x
x
x结果始终确定在一个范围即
{
x
:
0
≤
x
<
n
,
x
∈
Z
}
\{x:0\le x<n,x\in \mathbb{Z}\}
{x:0≤x<n,x∈Z}内,从而避免溢出。
有限群
群 ( S , ⊕ ) (S,\oplus ) (S,⊕)是集合 S S S和二元运算符 ⊕ \oplus ⊕组成,顾名思义群中的元素个数是有限的。对于该运算应该满足以下性质:
- 封闭性:对于任意 a , b ∈ S a,b\in S a,b∈S,有 a ⊕ b ∈ S a\oplus b \in S a⊕b∈S。
- 单位元:存在一个元素 e ∈ S e \in S e∈S,称 e e e为单位元,对所有 a ∈ S a\in S a∈S,满足 e ⊕ a = a ⊕ e = a e \oplus a=a\oplus e = a e⊕a=a⊕e=a。
- 结合律:对任意 a , b , c ∈ S a,b,c\in S a,b,c∈S,有 ( a ⊕ b ) ⊕ c = a ⊕ ( b ⊕ c ) (a\oplus b)\oplus c=a\oplus(b\oplus c) (a⊕b)⊕c=a⊕(b⊕c)。
- 逆元:对任意 a ∈ S a\in S a∈S,存在 b ∈ S b\in S b∈S,满足 a ⊕ b = b ⊕ a = e a\oplus b=b\oplus a=e a⊕b=b⊕a=e。
模n加法群
定义群 ( Z n , + n ) (\mathbb{Z}_n,+_n) (Zn,+n),其中 Z n = { x ∣ 0 ≤ x < n , x ∈ Z } \mathbb{Z}_n=\{x|0\le x<n,x\in\mathbb{Z}\} Zn={x∣0≤x<n,x∈Z}, + n +_n +n指在模n上的加法,即 a + n b = a + b m o d n a+_n b = a+b\mod n a+nb=a+bmodn,群 ( Z 5 , + 5 ) (\mathbb{Z}_5,+_5) (Z5,+5)的运算表为
+ 5 +_5 +5 | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
0 | 0 | 1 | 2 | 3 | 4 |
1 | 1 | 2 | 3 | 4 | 0 |
2 | 2 | 3 | 4 | 0 | 1 |
3 | 3 | 4 | 0 | 1 | 2 |
4 | 4 | 0 | 1 | 2 | 3 |
在该群中单位元为0,0的逆元为0,1的逆元为4。
模n乘法群
定义群 ( Z n ∗ , ⋅ n ) (\mathbb{Z}_n^*,\cdot_n) (Zn∗,⋅n),其中 Z n ∗ = { x ∈ Z n ∣ g c d ( a , n ) = 1 } \mathbb{Z}^*_n=\{x\in \mathbb{Z}_n|gcd(a,n)=1\} Zn∗={x∈Zn∣gcd(a,n)=1}, g c d ( a , n ) gcd(a,n) gcd(a,n)表示求a和n的最大公因数,若两数的最大公因数为1则两个数互素, ⋅ n \cdot_n ⋅n指在模n上的乘法,即 a ⋅ n b = a ⋅ b m o d n a \cdot_nb=a\cdot b \mod n a⋅nb=a⋅bmodn,群 ( Z 8 ∗ , ⋅ 8 ) (\mathbb{Z}_8^*,\cdot_8) (Z8∗,⋅8)的运算表为
⋅ 8 \cdot_8 ⋅8 | 1 | 3 | 5 | 7 |
---|---|---|---|---|
1 | 1 | 3 | 5 | 7 |
3 | 3 | 1 | 7 | 5 |
5 | 5 | 7 | 1 | 3 |
7 | 7 | 5 | 3 | 1 |
注意
Z
8
∗
=
{
1
,
3
,
5
,
7
}
≠
{
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
}
\mathbb{Z}_8^*=\{1,3,5,7\}\ne\{0,1,2,3,4,5,6,7\}
Z8∗={1,3,5,7}={0,1,2,3,4,5,6,7},因为0,2,4,6和8并不互素。
构造
(
Z
8
,
⋅
8
)
(\mathbb{Z}_8,\cdot_8)
(Z8,⋅8)的运算表如下
⋅ 8 \cdot_8 ⋅8 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
2 | 0 | 2 | 4 | 6 | 0 | 2 | 4 | 6 |
3 | 0 | 3 | 6 | 1 | 4 | 7 | 2 | 5 |
4 | 0 | 4 | 0 | 4 | 0 | 4 | 0 | 4 |
5 | 0 | 5 | 2 | 7 | 4 | 1 | 6 | 3 |
6 | 0 | 6 | 4 | 2 | 0 | 6 | 4 | 2 |
7 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
该运算并不存在逆元,因而不能构成群。
当 n n n取素数时, Z n ∗ = { 1 , 2 , … , n − 1 } \mathbb{Z}^*_n=\{1,2,\dots,n-1\} Zn∗={1,2,…,n−1},因为n必然与比其小的所有数互素。
⋅ 5 \cdot_5 ⋅5 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | 1 | 2 | 3 | 4 |
2 | 2 | 4 | 1 | 3 |
3 | 3 | 1 | 4 | 2 |
4 | 4 | 3 | 2 | 1 |
异或群
定义群 ( Z n , ⊕ ) (\mathbb{Z}_n,\oplus) (Zn,⊕),其中 Z n = { x ∣ 0 ≤ x < n , x ∈ Z } \mathbb{Z}_n=\{x|0\le x<n,x\in\mathbb{Z}\} Zn={x∣0≤x<n,x∈Z}, ⊕ \oplus ⊕指异或运算,群 ( Z 4 , ⊕ ) (\mathbb{Z}_4,\oplus) (Z4,⊕)的运算表为
⊕ \oplus ⊕ | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | 0 | 1 | 2 | 3 |
1 | 1 | 0 | 3 | 2 |
2 | 2 | 3 | 0 | 1 |
3 | 3 | 2 | 1 | 0 |
显然此时,单位元为0,任何元素的逆元为其自身。
伽罗华域
伽罗华域也称为有限域,域 ( R , + , − , ⋅ , ÷ ) (R,+,-,\cdot,\div) (R,+,−,⋅,÷)由运算元素集合和四则运算组成,由于减法、除法分别和加法、乘法是逆运算关系,只需要关注加法和乘法即可。对于加法来说,每个元素要求有对应的加法逆元;对于乘法来说,除0以外的每个元素要求要有对应的乘法逆元。关于群、环、域的概念进一步了解可阅读这篇博客。
伽罗华域 G F ( q ) GF(q) GF(q)表示
q q q指有限域的阶,在有限域中阶等于元素个数,有限域的阶通常是素数 P P P或是素数幂 P W P^W PW,即 q = P 或 P W q = P 或P^W q=P或PW。
有限域 G F ( P ) GF(P) GF(P)
G
F
(
P
)
GF(P)
GF(P)被称为P阶素数域,
P
P
P为素数。运算元素的集合为
Z
p
\mathbb{Z}_p
Zp,加法和乘法运算要在模p上进行,即此时的加法和乘法运算分别为
+
p
,
⋅
p
+_p,\cdot _p
+p,⋅p。在
G
F
(
P
)
GF(P)
GF(P)上
a
≡
b
m
o
d
P
a\equiv b \mod P
a≡bmodP与a=b相同,这意味着
a
=
b
→
a
=
k
n
+
b
,
k
∈
Z
a = b \to a=kn+b,k \in \mathbb{Z}
a=b→a=kn+b,k∈Z。当
P
P
P为素数时,显然所有大于0小于p的整数和是互素的,根据上面介绍的模n乘法群的概念,显然除去0以外,每个元素都能找到其逆元。
对于
G
F
(
2
)
GF(2)
GF(2),仅包含了元素0和1,加法表为
+ | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 0 ( 1 + 1 = 2 m o d 2 ≡ 0 m o d 2 ) 0 \ (1+1 =2 \mod 2\equiv 0 \mod 2) 0 (1+1=2mod2≡0mod2) |
乘法表为
⋅ \cdot ⋅ | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
有限域 G F ( P w ) GF(P^w) GF(Pw)
当
n
>
1
n>1
n>1时,
G
F
(
P
w
)
GF(P^w)
GF(Pw)可以表示为系数属于
G
F
(
P
)
GF(P)
GF(P)域上的多项式,
w
w
w表示多项式不能超过的阶。举个栗子,对于
G
F
(
3
4
)
GF(3^4)
GF(34),来说其包含了多项式
0
,
1
,
2
,
x
+
1
,
x
+
2
,
2
x
,
2
x
+
1
,
2
x
+
2
,
x
2
+
x
,
x
2
+
x
+
1
,
⋯
,
2
x
3
+
2
x
2
+
2
x
+
2
0,1,2,x+1,x+2,2x,2x+1,2x+2,x^2+x, x^2+x+1,\cdots,2x^3+2x^2+2x+2
0,1,2,x+1,x+2,2x,2x+1,2x+2,x2+x,x2+x+1,⋯,2x3+2x2+2x+2,即多项式系数为0,1,2,此时
w
=
4
w=4
w=4,多项式阶数不能超过4,符合这两个条件的多项式个数为
P
w
P^w
Pw,注意这里的有限域的集合中的元素可以看成多项式,即加法和乘法是指多项式的加法和乘法,特殊之处在于对于计算后的各项系数需要取模
P
P
P,同时对整体还需要取模
f
(
x
)
f(x)
f(x)。参考
G
F
(
P
)
GF(P)
GF(P)的取模方法,这里取的模
f
(
x
)
f(x)
f(x)也应该是多项式,关于多项式的运算规则可以查看这篇博客。接下来我会举出大量栗子帮助理解。
对于
G
F
(
2
3
)
GF(2^3)
GF(23),其包含了元素有8个分别为
0
,
1
,
x
,
x
+
1
,
x
2
,
x
2
+
1
,
x
2
+
x
,
x
2
+
x
+
1
0,1,x,x+1,x^2,x^2+1,x^2+x,x^2+x+1
0,1,x,x+1,x2,x2+1,x2+x,x2+x+1, 一些文章中多项式会用二进制进行表示,即8个元素也可以对应表示为000,001,010,011,100,101,110,111。
其可取的模为
x
3
+
x
2
+
1
x^3+x^2+1
x3+x2+1,
x
3
+
x
+
1
x^3+x+1
x3+x+1,模同样也可用二进制表示1101,1011.
在有限域
G
F
(
2
w
)
GF(2^w)
GF(2w)中,需要对多项式各项系数取模2
(
x
+
1
)
2
=
x
2
+
2
x
+
1
≡
x
2
+
1
(x+1)^2= x^2+2x+1\equiv x^2+1
(x+1)2=x2+2x+1≡x2+1,这里对
2
x
2x
2x的系数取模,
2
≡
0
m
o
d
2
2 \equiv 0 \mod 2
2≡0mod2
3
x
2
−
x
−
1
≡
x
2
+
x
+
1
3x^2-x-1\equiv x^2+x+1
3x2−x−1≡x2+x+1,这里对
3
x
2
3x^2
3x2的系数取模,
3
≡
1
m
o
d
2
3 \equiv 1 \mod 2
3≡1mod2
(
x
+
1
)
3
=
x
3
+
3
x
2
+
3
x
+
1
≡
x
3
+
x
2
+
x
+
1
(x+1)^3=x^3+3x^2+3x+1\equiv x^3+x^2+x+1
(x+1)3=x3+3x2+3x+1≡x3+x2+x+1
在有限域
G
F
(
3
w
)
GF(3^w)
GF(3w)中,需要对多项式各项系数取模3
(
x
+
1
)
2
=
x
2
+
2
x
+
1
≡
x
2
+
2
x
+
1
(x+1)^2=x^2+2x+1\equiv x^2+2x+1
(x+1)2=x2+2x+1≡x2+2x+1
3
x
2
−
x
−
1
≡
2
x
+
2
3x^2-x-1\equiv 2x+2
3x2−x−1≡2x+2
(
x
+
1
)
3
=
x
3
+
3
x
2
+
3
x
+
1
≡
x
3
+
1
(x+1)^3=x^3+3x^2+3x+1 \equiv x^3+1
(x+1)3=x3+3x2+3x+1≡x3+1
接下来需要进行取模,模为
f
(
x
)
f(x)
f(x),这个模等同于不可约多项式或是本原多项式,本原多项式是不可约多项式的特例,即在不可约多项式中除去最高阶的项,剩余项的阶最小那个多项式定义为本原多项式。希望对不可约多项式和本原多项式有更多了解的,可以参考这篇博客。对于
G
F
(
2
3
)
GF(2^3)
GF(23),模可以取
x
3
+
x
2
+
1
x^3+x^2+1
x3+x2+1或
x
3
+
x
+
1
x^3+x+1
x3+x+1,这两个多项式也就是阶为3的不可约多项式。
再列举几个计算案例
在
G
F
(
2
3
)
GF(2^3)
GF(23),模取
x
3
+
x
+
1
x^3+x+1
x3+x+1 ,计算
4
x
5
+
3
x
3
+
1
m
o
d
x
3
+
x
+
1
4x^5+3x^3+1 \mod x^3+x+1
4x5+3x3+1modx3+x+1
回想整数除法
11
/
5
=
2
余
1
11/5=2余1
11/5=2余1,
11
≡
1
m
o
d
5
11\equiv 1\mod 5
11≡1mod5
(
4
x
5
+
3
x
3
+
1
)
x
3
+
x
+
1
=
4
x
2
−
1
+
−
4
x
2
+
x
+
2
x
3
+
x
+
1
\frac{\left(4x^5+3x^3+1\right)}{x^3+x+1}=4x^2-1+\frac{-4x^2+x+2}{x^3+x+1}
x3+x+1(4x5+3x3+1)=4x2−1+x3+x+1−4x2+x+2
那这里余项为
−
4
x
2
+
x
+
2
-4x^2+x+2
−4x2+x+2,即
4
x
5
+
3
x
3
+
1
m
o
d
x
3
+
x
+
1
≡
−
4
x
2
+
x
+
2
m
o
d
x
3
+
x
+
1
(注意这里是对各项系数取模
2
,与多项式的模无关)
≡
x
m
o
d
x
3
+
x
+
1
4x^5+3x^3+1 \mod x^3+x+1 \equiv-4x^2+x+2\mod x^3+x+1(注意这里是对各项系数取模2,与多项式的模无关)\equiv x \mod x^3+x+1
4x5+3x3+1modx3+x+1≡−4x2+x+2modx3+x+1(注意这里是对各项系数取模2,与多项式的模无关)≡xmodx3+x+1
或者先对
4
x
5
+
3
x
3
+
1
4x^5+3x^3+1
4x5+3x3+1系数先取模2,即
4
x
5
+
3
x
3
+
1
=
x
3
+
1
4x^5+3x^3+1=x^3+1
4x5+3x3+1=x3+1
x
3
+
1
x
3
+
x
+
1
=
1
+
−
x
x
3
+
x
+
1
\frac{x^3+1}{x^3+x+1}=1+\frac{-x}{x^3+x+1}
x3+x+1x3+1=1+x3+x+1−x,对余项
−
x
-x
−x的系数
−
1
-1
−1取模2,结果为
x
x
x。
再举一个例子
(
1
+
2
m
)
x
2
+
(
1
+
2
n
)
x
≡
x
2
+
x
m
o
d
x
3
+
x
+
1
(1+2m)x^2+(1+2n)x\equiv x^2+x \mod x^3+x+1
(1+2m)x2+(1+2n)x≡x2+xmodx3+x+1,其中
m
,
n
∈
Z
m,n\in \mathbb{Z}
m,n∈Z
幂 | 多项式表示(模为 x 3 + x 2 + 1 ) x^3+x^2+1) x3+x2+1) | 二进制表示(模为 x 3 + x 2 + 1 ) x^3+x^2+1) x3+x2+1) | 多项式表示(模为 x 3 + x + 1 ) x^3+x+1) x3+x+1) | 二进制(模为 x 3 + x + 1 x^3+x+1 x3+x+1) |
---|---|---|---|---|
0 | 0 | 000 | 0 | 000 |
x 0 x^0 x0 | 1 | 001 | 1 | 001 |
x 1 x^1 x1 | x x x | 010 | x x x | 010 |
x 2 x^2 x2 | x 2 x^2 x2 | 100 | x 2 x^2 x2 | 100 |
x 3 x^3 x3 | x 2 + 1 x^2+1 x2+1 | 101 | x + 1 x+1 x+1 | 011 |
x 4 x^4 x4 | x 2 x^2 x2 | 100 | x 2 + x x^2+x x2+x | 110 |