Divisibility Part1
学习本节的基础:任意个整数之间进行加、减、乘的混合运算之后的结果仍然是整数。之后将不申明地承认这句话的正确性并加以运用。
用一个不为 0 0 0的数去除另一个数所得的商却不一定是整数( a a a除 b b b,写作 b a \frac{b}{a} ab, a a a除以 b b b,写作 a b \frac{a}{b} ba),所以我们需要引进整除的概念,这节会对整除进行深入讨论。
接下来,我们会给出定义,且给出并证明定义引申出的定理,最后对这些加以运用。
定义
1
1
1 设
a
,
b
a,b
a,b 是任意两个整数,其中
b
≠
0
b\neq0
b=0,如果存在一个整数
q
q
q,使得等式
a
=
b
q
(
1
)
\qquad \qquad \qquad \qquad \qquad a=bq\qquad\qquad\qquad\qquad\qquad(1)
a=bq(1)
成立,我们就说
b
b
b 整除
a
a
a 或
a
a
a 被
b
b
b 整除,记作
b
∣
a
b|a
b∣a,此时我们把
b
b
b 叫做
a
a
a 的因数,把
a
a
a 叫做
b
b
b 的倍数。
如果 ( 1 ) (1) (1) 里面的整数 q q q 不存在,我们就说 b b b 不能整除 a a a,记作 b ∤ a b \nmid a b∤a 。
接下来从定义出发,证明一些关于整除的基本定理。
定理
1
1
1(传递性) 若
a
a
a 是
b
b
b 的倍数,
b
b
b 是
c
c
c 的倍数,则
a
a
a 是
c
c
c 的倍数,也就是
b
∣
a
,
c
∣
b
⇒
a
∣
c
b|a,c|b \Rarr a|c
b∣a,c∣b⇒a∣c
证 由定义
1
1
1,可知
b
∣
a
,
c
∣
b
b|a,c|b
b∣a,c∣b,所以存在两个整数
a
1
,
b
1
a_1,b_1
a1,b1,使得
a
=
a
1
b
,
b
=
b
1
c
a=a_1b,\quad b=b_1c
a=a1b,b=b1c
成立,因此
a
=
(
a
1
b
1
)
c
a=(a_1b_1)c
a=(a1b1)c
又因为
a
1
,
b
1
a_1,b_1
a1,b1 是整数,所以
c
∣
a
c|a
c∣a。
定理 2 2 2 若 a , b a,b a,b 都是 m m m 的倍数,那么 a ± b a\pm b a±b 也是 m m m 的倍数。
证
a
,
b
a,b
a,b 都是
m
m
m 的倍数,所以存在两个整数
a
1
,
b
1
a_1,b_1
a1,b1,使得
a
=
a
1
m
,
b
=
b
1
m
a = a_1m,\quad b=b_1m
a=a1m,b=b1m
a
±
b
a\pm b
a±b 可以写作
a
±
b
=
(
a
1
±
b
1
)
m
a\pm b = (a_1\pm b_1)m
a±b=(a1±b1)m
因
a
1
±
b
1
a_1\pm b_1
a1±b1 是整数,故
a
±
b
a\pm b
a±b 是
m
m
m 的倍数。
同样的方法可以证明
定理 3 3 3 若 a 1 , a 2 , ⋯ , a n a_1,a_2,\cdots,a_n a1,a2,⋯,an 都是 m m m 的倍数, q 1 , q 2 , ⋯ , q n q_1,q_2,\cdots,q_n q1,q2,⋯,qn 是任意 n n n 个整数,则 q 1 a 1 + q 2 a 2 + ⋯ + q n a n q_1a_1+q_2a_2+\cdots+q_na_n q1a1+q2a2+⋯+qnan 是 m m m 的倍数。
证 因为 q 1 a 1 , q 2 a 2 , ⋯ , q n a n q_1a_1,q_2a_2,\cdots,q_na_n q1a1,q2a2,⋯,qnan 是 a 1 , a 2 , ⋯ , a n a_1,a_2,\cdots,a_n a1,a2,⋯,an 的倍数, a 1 , a 2 , ⋯ , a n a_1,a_2,\cdots,a_n a1,a2,⋯,an 是 m m m 的倍数,由定理 1 1 1 可得 q 1 a 1 , q 2 a 2 , ⋯ , q n a n q_1a_1,q_2a_2,\cdots,q_na_n q1a1,q2a2,⋯,qnan 是 m m m 的倍数
由定理 2 2 2 得 q 1 a 1 + q 2 a 2 + ⋯ + q n a n q_1a_1+q_2a_2+\cdots+q_na_n q1a1+q2a2+⋯+qnan 是 m m m 的倍数。
定理
4
4
4(带余除法) 若
a
,
b
a,b
a,b 是任意两个整数,其中
b
>
0
b>0
b>0,则存在两个整数
q
,
r
q,r
q,r,使得
a
=
b
q
+
r
,
0
≤
r
<
b
(
2
)
\qquad \qquad a=bq+r,\quad \: 0\leq r< b \qquad \qquad \qquad \qquad (2)
a=bq+r,0≤r<b(2)
成立,而且
q
,
r
q,r
q,r 是唯一的。
证 作整数序列
⋯
,
−
3
b
,
−
2
b
,
−
b
,
0
,
b
,
2
b
,
3
b
,
⋯
\cdots,-3b,-2b,-b,0,b,2b,3b,\cdots
⋯,−3b,−2b,−b,0,b,2b,3b,⋯
那么
a
a
a 在这个序列的某相邻两项之间,即存在一个整数
q
q
q,使得
b
q
≤
a
<
b
(
q
+
1
)
(
3
)
\qquad \qquad \qquad bq\leq a<b(q+1)\qquad \qquad\qquad\qquad\quad (3)
bq≤a<b(q+1)(3)
成立。令
r
=
a
−
b
q
r=a-bq
r=a−bq。代入
(
3
)
(3)
(3) 得
0
≤
r
<
b
0\leq r<b
0≤r<b
所以存在两个整数
q
,
r
q,r
q,r 使得
(
2
)
(2)
(2) 成立。
下面证明
q
,
r
q,r
q,r 的唯一性:设
q
,
r
q,r
q,r 和
q
1
,
r
1
q_1,r_1
q1,r1 是满足
(
2
)
(2)
(2) 的两对整数,则
{
a
=
b
q
+
r
(
0
≤
r
<
b
)
a
=
b
q
1
+
r
1
(
0
≤
r
1
<
b
)
\begin{cases} a=bq+r\quad(0\leq r<b)\\ a=bq_1+r_1\quad(0\leq r_1<b) \end{cases}
{a=bq+r(0≤r<b)a=bq1+r1(0≤r1<b)
联立得
b
q
+
r
=
b
q
1
+
r
1
bq+r=bq_1+r_1
bq+r=bq1+r1
移项
b
(
q
−
q
1
)
=
r
1
−
r
b(q-q_1)=r_1-r
b(q−q1)=r1−r
由于
r
,
r
1
r,r_1
r,r1 的值域都是
0
≤
r
<
b
0\leq r<b
0≤r<b,所以二者相减的绝对值不超过
b
b
b。
即
b
∣
q
−
q
1
∣
=
∣
r
1
−
r
∣
b|q-q_1|=|r_1-r|
b∣q−q1∣=∣r1−r∣
解得
{
q
=
q
1
r
=
r
1
\begin{cases} q=q_1\\ r=r_1 \end{cases}
{q=q1r=r1
证毕。
整数的很多基本性质都可以从定理 ( 4 ) (4) (4) 引导出来,本章最主要的内容都是在定理 ( 4 ) (4) (4) 的基础上建立。
定义 2 2 2 ( 2 ) (2) (2) 中的 q q q 叫做 a a a 被 b b b 除所得到的不完全商, r r r 叫做 a a a 的余数。
习题
一
证明定理 3 3 3。
二
证明 3 ∣ n ( n + 1 ) ( 2 n + 1 ) 3|n(n+1)(2n+1) 3∣n(n+1)(2n+1),其中 n n n 是任意整数。
题解 设 n = 3 γ + r n=3\gamma+r n=3γ+r ( 0 ≤ r < 3 ) (0\leq r<3) (0≤r<3) 得
n ( n + 1 ) ( 2 n + 1 ) = ( 3 γ + r ) ( 3 γ + r + 1 ) ( 6 γ + 2 r + 1 ) n(n+1)(2n+1)=(3\gamma+r)(3\gamma+r+1)(6\gamma+2r+1) n(n+1)(2n+1)=(3γ+r)(3γ+r+1)(6γ+2r+1)
- 当 r = 1 r=1 r=1,那么 2 r + 1 = 3 2r+1=3 2r+1=3 ,又 3 ∣ 6 γ , 3 ∣ 3 3|6\gamma,3|3 3∣6γ,3∣3 所以 3 ∣ ( 6 γ + 2 r + 1 ) 3|(6\gamma+2r+1) 3∣(6γ+2r+1)
所以, 3 ∣ n ( n + 1 ) ( 2 n + 1 ) 3|n(n+1)(2n+1) 3∣n(n+1)(2n+1)。
- 当 r = 2 r=2 r=2,那么 r + 1 = 3 r+1=3 r+1=3,又 3 ∣ 3 γ , 3 ∣ 3 3|3\gamma,3|3 3∣3γ,3∣3 所以 3 ∣ ( 3 γ + r + 1 ) 3|(3\gamma+r+1) 3∣(3γ+r+1)
所以, 3 ∣ n ( n + 1 ) ( 2 n + 1 ) 3|n(n+1)(2n+1) 3∣n(n+1)(2n+1)。
- 当 r = 0 r=0 r=0, 3 ∣ n 3|n 3∣n,所以 3 ∣ n ( n + 1 ) ( n + 1 ) 3|n(n+1)(n+1) 3∣n(n+1)(n+1)。
证毕。
三
若
a
x
0
+
b
y
0
ax_0+by_0
ax0+by0 是形如
a
x
+
b
y
ax+by
ax+by
(
(
(
x
,
y
x,y
x,y 是任意整数,
a
,
b
a,b
a,b 是两个不全为零的整数
)
)
) 的数中最小的正整数,证明
(
a
x
0
+
b
y
0
)
∣
(
a
x
+
b
y
)
(ax_0+by_0)|(ax+by)
(ax0+by0)∣(ax+by)
题解 设
a
x
+
b
y
=
q
1
(
a
x
0
+
b
y
0
)
+
r
1
(
0
≤
r
1
<
a
x
0
+
b
y
0
)
ax+by=q_1(ax_0+by_0)+r_1\quad(0\leq r_1<ax_0+by_0)
ax+by=q1(ax0+by0)+r1(0≤r1<ax0+by0)
可得
r
1
=
a
(
x
−
q
1
x
0
)
+
b
(
y
−
q
1
y
0
)
r_1=a(x-q_1x_0)+b(y-q_1y_0)
r1=a(x−q1x0)+b(y−q1y0)
r
1
r_1
r1 满足
a
x
+
b
y
ax+by
ax+by 的形式,而
a
x
0
+
b
y
0
ax_0+by_0
ax0+by0 是形如
a
x
+
b
y
ax+by
ax+by 的数中最小的正整数,设
(
a
x
0
+
b
y
0
)
(ax_0+by_0)
(ax0+by0)为
d
d
d。
所以, r 1 r_1 r1 是 d d d 的倍数,设 r = q 2 d r=q_2d r=q2d,那么 a x + b y = q 1 d + q 2 d ax+by=q_1d+q_2d ax+by=q1d+q2d。
显然 d ∣ ( a x + b y ) d|(ax+by) d∣(ax+by)。
证毕。
四
若
a
,
b
a,b
a,b 是任意两个整数,且
b
≠
0
b\neq0
b=0,证明:存在两个整数
s
,
t
s,t
s,t 使得
a
=
b
s
+
t
,
∣
t
∣
≤
∣
b
∣
2
a=bs+t,\quad |t| \leq \frac{|b|}{2}
a=bs+t,∣t∣≤2∣b∣
成立,并且当
b
b
b 是奇数的时候,
s
,
t
s,t
s,t 是唯一存在的,当
b
b
b 是偶数的时候,结果如何?
题解 由定理
4
4
4 可知,对任意整数
a
,
b
a,b
a,b 都有
a
=
q
b
+
r
,
0
≤
r
<
∣
b
∣
a=qb+r,\quad 0\leq r<|b|
a=qb+r,0≤r<∣b∣
- b b b 是正数
若 r ≤ b 2 r\leq\frac{b}{2} r≤2b,则 s = q , t = r s=q,t=r s=q,t=r。
若 r ≥ b 2 r\geq \frac{b}{2} r≥2b ,则 a = ( q + 1 ) b + ( r − b ) a=(q+1)b+(r-b) a=(q+1)b+(r−b),显然 ∣ r − b ∣ < b 2 |r-b|<\frac{b}{2} ∣r−b∣<2b, s = q + 1 , t = r − b s=q+1,t=r-b s=q+1,t=r−b
- b b b 是负数
若 r ≤ ∣ b 2 ∣ r\leq |\frac{b}{2}| r≤∣2b∣,则 s = q , t = r s=q,t=r s=q,t=r。
若 r ≥ ∣ b 2 ∣ r\geq |\frac{b}{2}| r≥∣2b∣,则 a = ( q − 1 ) b + ( r + b ) a=(q-1)b+(r+b) a=(q−1)b+(r+b),显然 ∣ r + b ∣ < b 2 |r+b|<\frac{b}{2} ∣r+b∣<2b, s = q − 1 , t = r + b s=q-1,t=r+b s=q−1,t=r+b
当 b b b 为奇数, b 2 \frac{b}{2} 2b 向下取整,不存在 r = b 2 r=\frac{b}{2} r=2b, s s s 只能取 q q q 或 q − 1 q-1 q−1 或 q + 1 q+1 q+1 中的一个。
当 b b b 为偶数,存在 r = b 2 r=\frac{b}{2} r=2b,所以当 r = b 2 r=\frac{b}{2} r=2b时, s s s 既能取 q q q,又能取 q − 1 q-1 q−1 或 q + 1 q+1 q+1 。
五
检查一个整数 n n n 是否能被 3 3 3 整除。
题解
对于任意一个整数
n
n
n,都可以写成:
n
=
a
0
×
1
0
0
+
a
1
×
1
0
1
+
⋯
+
a
n
×
1
0
n
n=a_0\times10^0+a_1\times 10^1+\dots+a_n\times10^n
n=a0×100+a1×101+⋯+an×10n
已知
1
0
i
10^i
10i 除以
3
3
3 的余数是
1
1
1,所以
a
i
×
1
0
i
a_i\times10^i
ai×10i 除以
3
3
3 的余数等价于
a
i
a_i
ai 除以
3
3
3 的余数。
那么 n n n 除以 3 3 3 的余数,等价于 ∑ i = 1 n a [ i ] \sum_{i=1}^n a[i] ∑i=1na[i] 除以 3 3 3 的余数。
所以 n n n 能被 3 3 3 整除,等价于 ∑ i = 1 n a [ i ] \sum_{i=1}^{n}a[i] ∑i=1na[i] 能被 3 3 3 整除。
证毕。
六
检查一个整数 n n n 是否能被 4 4 4 整除。
题解
对于任意一个整数
n
n
n,都可以写成:
n
=
a
0
×
1
0
0
+
a
1
×
1
0
1
+
⋯
+
a
n
×
1
0
n
n=a_0\times10^0+a_1\times 10^1+\dots+a_n\times10^n
n=a0×100+a1×101+⋯+an×10n
已知
10
10
10 除以
4
4
4 的余数是
2
2
2,已知
1
0
i
10^i
10i
(
i
≥
2
)
(i\geq2)
(i≥2)除以
4
4
4 的余数是
0
0
0。
所以 n n n 除以 4 4 4 的余数取决于于 a 0 + a 1 × 1 0 1 a_0+a_1\times10^1 a0+a1×101 除以 4 4 4 的余数。
如果 a 0 + a 1 × 1 0 1 a_0+a_1\times10^1 a0+a1×101 除以 4 4 4 的余数是 0 0 0,那么 n n n 能被 4 4 4 整除
换句话说, n n n 是否能被 4 4 4 整除,取决于 n n n 的最后两位能否被 4 4 4 整除。
证毕。
七
检查一个整数 n n n 是否能被 6 6 6 整除。
题解
先检查最后一位数是否是偶数(是否能被 2 2 2 整除),再利用第五题的结论,检查是否被 3 3 3 整除。
证毕。
八
检查一个整数 n n n 是否能被 7 7 7 整除。
同余做法
等价于直接判断 n m o d 7 n\:mod\:7 nmod7 是否为 0 0 0。
方法是将数字读入到字符串内,然后从最高位开始对 7 7 7 取模然后乘以 10 10 10,再下一位。
最后得到的数为 0 0 0,就说明是 7 7 7 的倍数。
时间复杂度 O ( n ) O(n) O(n) ( n n n 代表数位个数)。
这个方法是通用的,如果时间复杂度允许 7 7 7 可以换成任意的数。
string s;
cin >> s;
int now = 0;
for (int j = 0; j < s.size(); j++) {
now = now * 10 + (s[j] - '0');
now %= 7;
}
if(now == 0) cout << "Yes" << endl;
else cout << "No" << endl;