本文属于「数论」系列文章之一。这一系列着重于数论算法的学习和应用。由于内容随时可能发生更新变动,欢迎关注和收藏数论算法系列文章汇总目录一文以作备忘。此外,在本系列学习文章中,为了透彻理解数论知识,本人参考了诸多博客、教程、文档、书籍等资料。以下是本文的不完全参考目录,在后续学习中还会逐渐补充:
- 数论算法,姜建国、臧明相编著,西安电子科技大学出版社
初等数论的证明中最重要、最基本、最常用的工具就是带余除法(或称带余数除法、除法算法、欧几里得除法),它承前(整除)启后(模运算、同余)。
1. 带余除法
1.1 带余除法定义及扩展
定理1.1.3 设 a , b a, b a,b 是两个给定的整数, b ≠ 0 b \ne 0 b=0 ,则一定存在唯一的一对整数 q , r q, r q,r 满足 a = q b + r , 0 ≤ r < ∣ b ∣ a = qb + r, \quad 0 \le r < |b| a=qb+r,0≤r<∣b∣
注意,此处约定余数 r r r 为非负整数,于是 − 7 = − 3 ⋅ 3 + 2 -7 = -3 \cdot 3 + 2 −7=−3⋅3+2(即 − 7 / 3 = − 3 -7 / 3 = -3 −7/3=−3 ,除法向下取整)和 − 7 = − 2 ⋅ 3 − 1 -7 = -2 \cdot 3- 1 −7=−2⋅3−1 (即 − 7 / 3 = − 2 -7 / 3 = -2 −7/3=−2 ,除法向零取整/截断小数,即C/C++的整型除法)之间,我们取前者为准。
一般情况下,我们还约定 b > 0 b > 0 b>0 ,则上式可表示为 a = q b + r , 0 ≤ r < b (1.1.1) \tag{1.1.1} a = qb + r, \quad 0\le r< b a=qb+r,0≤r<b(1.1.1)
证明 先证明存在性。当 b ∣ a b \mid a b∣a 时,可取 q = a / b , r = 0 q = a/ b, r = 0 q=a/b,r=0 。当 b ∤ a b \nmid a b∤a 时,考虑集合 T = { k b ∣ k = 0 , ± 1 , ± 2 , … } = { … , − 3 b , − 2 b , − b , 0 , b , 2 b , 3 b , … } T = \{ kb \mid k = 0, \pm 1, \pm 2, \dots \} = \{ \dots, -3b, -2b, -b, 0, b, 2b, 3b, \dots \} T={kb∣k=0,±1,±2,…}={…,−3b,−2b,−b,0,b,2b,3b,…}
将实数分为长度为 b b b 的区间, a a a 必落在某区间内,即存在整数 q q q ,使得 q b ≤ a < ( q + 1 ) b qb \le a \lt (q + 1) b qb≤a<(q+1)b
令 r = a − b q ≥ 0 r = a - bq \ge 0 r=a−bq≥0 ,则有 a = q b + r , 0 ≤ r < b a = qb + r, \quad 0\le r \lt b a=qb+r,0≤r<b
再证明唯一性。设另有两整数 q 1 , r 1 q_1, r_1 q1,r1 也满足式 ( 1.1.1 ) (1.1.1) (1.1.1) ,即 a = q 1 b + r 1 , 0 ≤ r 1 < b a = q_1 b + r_1, \quad 0 \le r_1 \lt b a=q1b+r1,0≤r1<b
那么必有 b ( q − q 1 ) = − ( r − r 1 ) b (q - q_1 ) = -(r - r_1) b(q−q1)=−(r−r1)
当 q ≠ q 1 q \ne q_1 q=q1 时,有 ∣ b ( q − q 1 ) ∣ ≥ b , ∣ − ( r − r 1 ) ∣ < b |\ b(q - q_1)\ | \ge b,\ |-(r - r_1)\ | < b ∣ b(q−q1) ∣≥b, ∣−(r−r1) ∣<b
矛盾,故必有 q = q 1 , r = r 1 q = q_1, r = r_1 q=q1,r=r1 。
推论 设整数
a
,
b
,
r
a, b, r
a,b,r 满足式
(
1.1.1
)
(1.1.1)
(1.1.1) 中给出的关系,则
b
∣
a
b \mid a
b∣a 的充要条件是
r
=
0
r = 0
r=0 。
证明 由整除的定义1.1.1和定理1.3的结论,即知推论成立。
现在我们由整除扩展到了带余除法,不过带余除法还可以进一步扩展为更一般的方式。
定理1.1.4 设
a
,
b
a, b
a,b 是两个给定的整数,
b
≠
0
b \ne 0
b=0 ,则对任意整数
c
c
c ,一定存在唯一的一对整数
q
,
r
q, r
q,r ,满足
a
=
q
b
+
r
,
c
≤
r
<
∣
b
∣
+
c
(1.1.2)
\tag{1.1.2}a = qb + r, \quad c\le r \lt |b| + c
a=qb+r,c≤r<∣b∣+c(1.1.2)
证明 类似定理1.1.3,先证存在性,再证唯一性。证明存在性时,只要将区间设为
T
=
{
k
b
+
c
∣
k
=
0
,
±
1
,
±
2
,
…
}
T = \{ kb + c \mid k = 0, \pm 1, \pm 2, \dots \}
T={kb+c∣k=0,±1,±2,…} 即可。
推论 设整数 a , b , r a, b, r a,b,r 满足式 ( 1.1.2 ) (1.1.2) (1.1.2) 中给出的关系,则 b ∣ a b\mid a b∣a 的充要条件是 b ∣ r b\mid r b∣r 。
由上述带余除法的定义及其扩展,可以给出如下定义。
定义1.1.3 设
a
=
q
b
+
r
(
0
≤
r
<
b
)
a = qb + r(0\le r < b)
a=qb+r(0≤r<b) ,则称
q
q
q 为
a
a
a 被
b
b
b 除所得的不完全商,称
r
r
r 为
a
a
a 被
b
b
b 除所得的非负余数,记为
r
=
(
a
)
b
r = (a)_b
r=(a)b 。
推论
b
∣
a
b\mid a
b∣a 的充要条件是
a
a
a 被
b
b
b 除所得的余数
r
=
0
r = 0
r=0 。
定义1.1.3中要求余数
r
r
r 满足
0
≤
r
<
b
0 \le r < b
0≤r<b ,而实际问题中可能需要突破此限制。故关于常见的余数范围,有以下分类和命名:
(1)最小非负余数:
c
=
0
,
0
≤
r
<
b
c = 0, 0\le r< b
c=0,0≤r<b
(2)最小正余数:
c
=
1
,
1
≤
r
≤
b
c = 1, 1\le r \le b
c=1,1≤r≤b
(3)最大非正余数:
c
=
−
b
+
1
,
−
b
+
1
≤
r
≤
0
c = -b + 1, -b + 1 \le r \le 0
c=−b+1,−b+1≤r≤0
(4)最大负余数:
c
=
−
b
,
b
≤
r
<
0
c = -b, b \le r < 0
c=−b,b≤r<0
(5)最小绝对余数:
−
b
2
≤
r
<
b
2
-\dfrac{b}{2} \le r < \dfrac{b}{2}
−2b≤r<2b 或
−
b
2
<
r
≤
b
2
-\dfrac{b}{2}< r\le \dfrac{b}{2}
−2b<r≤2b
一般情况下,当
a
=
q
b
+
r
a = qb + r
a=qb+r 且选
0
≤
r
<
b
0 \le r < b
0≤r<b 时,有
q
=
⌊
a
b
⌋
,
r
=
a
−
b
⌊
a
b
⌋
q = \lfloor \dfrac{a}{b}\rfloor,\ r = a - b\lfloor \dfrac{a}{b}\rfloor
q=⌊ba⌋, r=a−b⌊ba⌋ 。其中符号
⌊
x
⌋
\lfloor x\rfloor
⌊x⌋ 称为下整数函数,即针对实数
x
x
x ,
⌊
x
⌋
\lfloor x\rfloor
⌊x⌋ 的值为不大于
x
x
x 的最大整数(详见2.2节)。例如
⌊
3.1
⌋
=
⌊
3.5
⌋
=
⌊
3.9
⌋
=
3
,
⌊
−
3.1
⌋
=
⌊
−
3.5
⌋
=
⌊
−
3.9
⌋
=
−
4
\lfloor 3.1\rfloor = \lfloor 3.5\rfloor = \lfloor 3.9 \rfloor = 3,\ \lfloor -3.1 \rfloor = \lfloor -3.5 \rfloor = \lfloor -3.9 \rfloor = -4
⌊3.1⌋=⌊3.5⌋=⌊3.9⌋=3, ⌊−3.1⌋=⌊−3.5⌋=⌊−3.9⌋=−4 。
1.2 带余除法的应用
【例1】设
a
=
100
,
b
=
30
a = 100, b = 30
a=100,b=30 ,当
c
c
c 分别为
10
,
35
,
−
50
10, 35, -50
10,35,−50 时,写出
a
,
b
,
c
a, b, c
a,b,c 三者如式
(
1.1.2
)
(1.1.2)
(1.1.2) 表示的关系。
解:当
c
=
10
c = 10
c=10 时,有
10
≤
r
<
40
10 \le r < 40
10≤r<40 ,从而有
100
=
3
⋅
30
+
10
100 = 3 \cdot 30 + 10
100=3⋅30+10 。
当
c
=
35
c = 35
c=35 时,有
35
≤
r
<
65
35 \le r < 65
35≤r<65 ,从而有
100
=
2
⋅
30
+
40
100 = 2 \cdot 30 + 40
100=2⋅30+40 。
当
c
=
−
50
c = -50
c=−50 时,有
−
50
≤
r
<
−
20
-50 \le r < -20
−50≤r<−20 ,从而有
100
=
5
⋅
30
+
(
−
50
)
100 = 5 \cdot 30 + (-50)
100=5⋅30+(−50) 。
由定理1.1.4的推论可知,当 a = q b + r a = qb + r a=qb+r 时, b ∣ a b\mid a b∣a 的充要条件是 b ∣ r b\mid r b∣r ,故当 r r r 满足 0 ≤ r < b 0 \le r < b 0≤r<b 时,就有 b ∣ r ⇔ r = 0 b \mid r \Lrarr r = 0 b∣r⇔r=0 ,即定理1.1.3的推论结果。
定理1.1.4的意义在于,当判断 b b b 能否整除 a a a 时,可以化简判断过程。即利用减法(避免做除法运算)就可以达到快速判断的目的,尤其是提高心算的速度。
【例2】判断
7
7
7 能否整除
12345
12345
12345 。
解:令
a
=
12345
,
b
=
7
a = 12345, b = 7
a=12345,b=7 ,则可看出先选
q
1
=
1000
q_1 = 1000
q1=1000 ,即得
r
1
=
5345
r_1 = 5345
r1=5345 。由定理1.1.4的推论可知,
7
∣
12345
7 \mid 12345
7∣12345 的充要条件是
7
∣
5345
7\mid 5345
7∣5345 。
以此类推,可选
q
2
=
700
q_2 = 700
q2=700 ,得
r
2
=
445
r_2 = 445
r2=445 ,再选
q
3
=
60
q_3 = 60
q3=60 ,得
r
3
=
25
r_3 = 25
r3=25 。最后由
r
3
r_3
r3 可知,
7
∤
12345
7 \nmid 12345
7∤12345 。