前言
在密码学中,求余是非常重要的操作,比如在DH算法中,就主要利用了求余的算法。本文就余数计算和相关性质进行介绍。
定义
给定 a , b , q , r ∈ Z a, b, q, r \in \mathbb{Z} a,b,q,r∈Z, 其中 b ≠ 0 , 0 ≤ r ≤ b b \neq 0,0 \leq r \leq b b=0,0≤r≤b, 满足 q × b + r = a q \times b + r = a q×b+r=a,则称 r r r 是 a a a 除以 b b b 的余数,记作 a ≡ r ( m o d b ) a \equiv r \ (\mathrm{mod} \ b) a≡r (mod b),(有时也记为 a ÷ b = q ⋅ ⋅ ⋅ r a \div b = q \cdot\cdot\cdot r a÷b=q⋅⋅⋅r)。当 r = 0 r = 0 r=0 时,称 a a a 可以被 b b b 整除。
推理
根据
a
÷
b
=
q
⋅
⋅
⋅
r
a \div b = q \cdot\cdot\cdot r
a÷b=q⋅⋅⋅r,对表达式中的4个变量求法分别如下:
1)
a
=
b
×
q
+
r
a = b \times q + r
a=b×q+r
2)
b
=
(
a
−
r
)
÷
q
b = (a - r) \div q
b=(a−r)÷q
3)
q
=
(
a
−
r
)
÷
b
q = (a - r) \div b
q=(a−r)÷b
4)
r
=
a
m
o
d
b
r = a \ \mathrm{mod} \ b
r=a mod b (程序中多表示为
a
a
a %
b
b
b)
性质
给定 a , b , c , r ∈ Z a, b, c, r \in \mathbb{Z} a,b,c,r∈Z 且 c ≠ 0 , 0 ≤ r ≤ c c \neq 0,0 \leq r \leq c c=0,0≤r≤c,则有以下三个性质。
性质1 若
a
m
o
d
c
=
b
m
o
d
c
a \ \mathrm{mod} \ c = b \ \mathrm{mod} \ c
a mod c=b mod c,则
(
a
−
b
)
m
o
d
c
=
0
(a-b) \ \mathrm{mod} \ c =0
(a−b) mod c=0。当
a
−
b
a - b
a−b 改为
b
−
a
b - a
b−a时,结论同样成立。
证明:根据以上结论,可设
a
=
k
1
c
+
r
,
b
=
k
2
c
+
r
a = k_1c + r, b = k_2c+r
a=k1c+r,b=k2c+r,其中
k
1
,
k
2
k_1, k_2
k1,k2 为系数,
r
r
r 为余数,则
a
−
b
=
(
k
1
c
+
r
)
−
(
k
2
c
+
r
)
=
(
k
1
−
k
2
)
c
a-b=(k_1c + r) - (k_2c + r) = (k_1 - k_2)c
a−b=(k1c+r)−(k2c+r)=(k1−k2)c,所以可以被
c
c
c 整除。
示例:如 22 mod 7 = 1, 15 mod 7 = 1,则(22-15)
÷
\div
÷ 7 = 0 或 (15-22)
÷
\div
÷ 7 = 0。
性质2 若
(
a
+
c
)
m
o
d
b
=
r
(a + c) \ \mathrm{mod} \ b = r
(a+c) mod b=r, 则
(
(
a
m
o
d
b
)
+
(
c
m
o
d
b
)
)
m
o
d
c
=
r
((a \ \mathrm{mod} \ b) + (c \ \mathrm{mod} \ b)) \ \mathrm{mod} \ c = r
((a mod b)+(c mod b)) mod c=r。当正号改为负号时,等式同样成立。
示例:如 (3 + 8) mod 5 = 1,而 ((3 mod 5) + (8 mod 5)) mod 5 = (3 + 3) mod 5 = 1。
当正号变负时,(3-8) mod 5 = 0, 而 ((3 mod 5) - (8 mod 5)) mod 5 = 0 mod 5 = 0。
性质3
(
a
×
c
)
m
o
d
b
=
(
a
m
o
d
b
)
×
(
c
m
o
d
b
)
(a \times c) \ \mathrm{mod} \ b = (a \ \mathrm{mod} \ b) \times (c \ \mathrm{mod} \ b)
(a×c) mod b=(a mod b)×(c mod b) mod
b
b
b。
示例:(7
×
\times
× 9) mod 5 = 3,而((7 mod 5)
×
\times
× (9 mod 5)) mod 5 = (2
×
\times
× 4) mod 5 = 3。
根据性质3,可以有个简单的推论:
(
a
p
(a^p
(ap mod
c
)
q
c)^q
c)q mod
c
=
a
p
q
c=a^{pq}
c=apq mod
c
c
c.