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;