前言
注:以下提到的数如不加说明均为非负整数
你小学的时候就知道,一个数能被2整除的充要条件是它的个位数为偶数,能被3整除的充要条件是它的各位数之和能被3整除。个位数为偶数的数能被2整除很显然,但你肯定好奇过为什么各位数之和能被3整除的数就能被3整除?这个神奇的结论是怎么得到的?各位数之和能被别的数整除的数怎么就不一定能被这个数整除?别的数的整除又有什么规律?看完后面的分析你就恍然大悟啦,其实各位数之和能被3整除的数就能被3整除这个规律纯属巧合(因为10的任意非负整数次幂模3的结果均为1),然后你会惊奇地发现能被9整除的结论跟这个是一样的。
一个 n n n位 k k k进制数 ( a n − 1 a n − 2 ⋯ a 2 a 1 a 0 ) k (a_{n-1}a_{n-2}\cdots a_2a_1a_0)_k (an−1an−2⋯a2a1a0)k可表示为 n n n项 n − 1 n-1 n−1次多项式: ∑ i = 0 n − 1 a i k i \sum_{i=0}^{n-1}a_ik^i i=0∑n−1aiki若该数能被 x x x整除,即 ⟮ ∑ i = 0 n − 1 a i k i ⟯ % x = 0 \lgroup\sum_{i=0}^{n-1}a_ik^i\rgroup\%x=0 ⟮i=0∑n−1aiki⟯%x=0成立,则 ⟮ ∑ i = 0 n − 1 a i ( k i % x ) ⟯ % x = 0 \lgroup\sum_{i=0}^{n-1}a_i(k^i\%x)\rgroup\%x=0 ⟮i=0∑n−1ai(ki%x)⟯%x=0成立。由此可得出一般规律:一个 n n n位 k k k进制数能被 x x x整除的充要条件为它的各位数与各自的权模 x x x的乘积之和能被 x x x整除。
十进制
设一个十进制数 n n n, f i ( x ) = 1 0 i % x f_i(x)=10^i\%x fi(x)=10i%x, S x = { f i ( x ) ∣ i = 0 , 1 , 2 , ⋯ , n − 1 } S_x=\{f_i(x)|i=0,1,2,\cdots,n-1\} Sx={fi(x)∣i=0,1,2,⋯,n−1}, S x S_x Sx为有序集。
以下列举 x = 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 x=2,3,4,5,6,7,8,9 x=2,3,4,5,6,7,8,9的情况:
x = 2 x=2 x=2时, S x = { 1 , 0 , 0 , 0 , ⋯ } S_x=\{1,0,0,0,\cdots\} Sx={1,0,0,0,⋯},则 n % 2 = 0 ⟺ a 0 % 2 = 0 n\%2=0\iff a_0\%2=0 n%2=0⟺a0%2=0即个位数能被2整除,也即个位数为0,2,4,6或8;
x
=
3
x=3
x=3时,
S
x
=
{
1
,
1
,
1
,
1
,
⋯
}
S_x=\{1,1,1,1,\cdots\}
Sx={1,1,1,1,⋯},则
n
%
3
=
0
⟺
⟮
∑
i
=
0
n
−
1
a
i
⟯
%
3
=
0
n\%3=0\iff\lgroup\sum_{i=0}^{n-1}a_i\rgroup\%3=0
n%3=0⟺⟮i=0∑n−1ai⟯%3=0即各位数之和能被3整除;
x
=
4
x=4
x=4时,
S
x
=
{
1
,
2
,
0
,
0
,
⋯
}
S_x=\{1,2,0,0,\cdots\}
Sx={1,2,0,0,⋯},则
n
%
4
=
0
⟺
(
a
0
+
2
a
1
)
%
4
=
0
n\%4=0\iff (a_0+2a_1)\%4=0
n%4=0⟺(a0+2a1)%4=0即个位数加上十位数的2倍,结果能被4整除;
x
=
5
x=5
x=5时,
S
x
=
{
1
,
0
,
0
,
0
,
⋯
}
S_x=\{1,0,0,0,\cdots\}
Sx={1,0,0,0,⋯},则
n
%
5
=
0
⟺
a
0
%
5
=
0
n\%5=0\iff a_0\%5=0
n%5=0⟺a0%5=0即个位数能被5整除,也即个位数为0或5;
x
=
6
x=6
x=6时,
S
x
=
{
1
,
4
,
4
,
4
,
⋯
}
S_x=\{1,4,4,4,\cdots\}
Sx={1,4,4,4,⋯},则
n
%
6
=
0
⟺
⟮
a
0
+
4
∑
i
=
1
n
−
1
a
i
⟯
%
6
=
0
n\%6=0\iff\lgroup a_0+4\sum_{i=1}^{n-1}a_i\rgroup\%6=0
n%6=0⟺⟮a0+4i=1∑n−1ai⟯%6=0即个位数加上除个位数外其他位数之和的4倍,结果能被6整除;
x
=
7
x=7
x=7时,
S
x
=
{
1
,
3
,
2
,
6
,
4
,
5
,
1
,
3
,
2
,
6
,
4
,
5
,
⋯
}
S_x=\{1,3,2,6,4,5,1,3,2,6,4,5,\cdots\}
Sx={1,3,2,6,4,5,1,3,2,6,4,5,⋯},则
n
%
7
=
0
⟺
⟮
∑
i
=
0
[
(
n
−
1
)
/
6
]
(
a
6
i
+
3
a
6
i
+
1
+
2
a
6
i
+
2
+
6
a
6
i
+
3
+
4
a
6
i
+
4
+
5
a
6
i
+
5
)
⟯
%
7
=
0
n\%7=0\iff\lgroup\sum_{i=0}^{[(n-1)/6]}(a_{6i}+3a_{6i+1}+2a_{6i+2}+6a_{6i+3}+4a_{6i+4}+5a_{6i+5})\rgroup\%7=0
n%7=0⟺⟮i=0∑[(n−1)/6](a6i+3a6i+1+2a6i+2+6a6i+3+4a6i+4+5a6i+5)⟯%7=0
x
=
8
x=8
x=8时,
S
x
=
{
1
,
2
,
4
,
0
,
0
,
0
,
⋯
}
S_x=\{1,2,4,0,0,0,\cdots\}
Sx={1,2,4,0,0,0,⋯},则
n
%
8
=
0
⟺
(
a
0
+
2
a
1
+
4
a
2
)
%
8
=
0
n\%8=0\iff(a_0+2a_1+4a_2)\%8=0
n%8=0⟺(a0+2a1+4a2)%8=0即个位数加上十位数的2倍再加上百位数的4倍,结果能被8整除;
x
=
9
x=9
x=9时,
S
x
=
{
1
,
1
,
1
,
1
,
⋯
}
S_x=\{1,1,1,1,\cdots\}
Sx={1,1,1,1,⋯},则
n
%
9
=
0
⟺
⟮
∑
i
=
0
n
−
1
a
i
⟯
%
9
=
0
n\%9=0\iff\lgroup\sum_{i=0}^{n-1}a_i\rgroup\%9=0
n%9=0⟺⟮i=0∑n−1ai⟯%9=0即各位数之和能被9整除;
x x x等于其他数时,通过以下代码能找出 1 0 i % x 10^i\%x 10i%x的规律
def f(x):
return [10 ** i % x for i in range(20)]
二进制
由于整数在计算中是以二进制储存的,我们不妨探究下二进制数整除和它各位数之间的规律。
设一个二进制数 n n n, f i ( x ) = 2 i % x f_i(x)=2^i\%x fi(x)=2i%x, S x = { f i ( x ) ∣ i = 0 , 1 , 2 , ⋯ , n − 1 } S_x=\{f_i(x)|i=0,1,2,\cdots,n-1\} Sx={fi(x)∣i=0,1,2,⋯,n−1}, S x S_x Sx为有序集。
以下列举 x = 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 x=2,3,4,5,6,7,8,9,10 x=2,3,4,5,6,7,8,9,10的情况:
x = 2 x=2 x=2时, S x = { 1 , 0 , 0 , 0 , ⋯ } S_x=\{1,0,0,0,\cdots\} Sx={1,0,0,0,⋯},则 n % 2 = 0 ⟺ a 0 % 2 = 0 n\%2=0\iff a_0\%2=0 n%2=0⟺a0%2=0即最低位能被2整除,也即最低位为0(可与1按位与得到最低位);
x
=
3
x=3
x=3时,
S
x
=
{
1
,
2
,
1
,
2
,
⋯
}
S_x=\{1,2,1,2,\cdots\}
Sx={1,2,1,2,⋯},则
n
%
3
=
0
⟺
⟮
∑
i
=
0
[
(
n
−
1
)
/
2
]
a
2
i
+
1
a
2
i
⟯
%
3
=
0
(
a
2
i
+
1
a
2
i
表
示
一
个
两
位
数
)
n\%3=0\iff\lgroup\sum_{i=0}^{[(n-1)/2]}a_{2i+1}a_{2i}\rgroup\%3=0(a_{2i+1}a_{2i}表示一个两位数)
n%3=0⟺⟮i=0∑[(n−1)/2]a2i+1a2i⟯%3=0(a2i+1a2i表示一个两位数)
x
=
4
x=4
x=4时,
S
x
=
{
1
,
2
,
0
,
0
,
⋯
}
S_x=\{1,2,0,0,\cdots\}
Sx={1,2,0,0,⋯},则
n
%
4
=
0
⟺
a
1
a
0
%
4
=
0
(
a
1
a
0
表
示
最
低
两
位
)
n\%4=0\iff a_1a_0\%4=0(a_1a_0表示最低两位)
n%4=0⟺a1a0%4=0(a1a0表示最低两位)即最低两位能被4整除,也即最低两位为00(可与
(
11
)
2
(11)_2
(11)2按位与得到最低两位);
x
=
5
x=5
x=5时,
S
x
=
{
1
,
2
,
4
,
3
,
1
,
2
,
4
,
3
,
⋯
}
S_x=\{1,2,4,3,1,2,4,3,\cdots\}
Sx={1,2,4,3,1,2,4,3,⋯},则
n
%
5
=
0
⟺
⟮
∑
i
=
0
[
(
n
−
1
)
/
4
]
(
a
4
i
+
2
a
4
i
+
1
+
4
a
4
i
+
2
+
3
a
4
i
+
3
)
⟯
%
5
=
0
⟺
⟮
∑
i
=
0
[
(
n
−
1
)
/
4
]
(
a
4
i
+
3
a
4
i
+
2
a
4
i
+
1
a
4
i
−
5
a
4
i
+
3
)
⟯
%
5
=
0
n\%5=0\iff\lgroup\sum_{i=0}^{[(n-1)/4]}(a_{4i}+2a_{4i+1}+4a_{4i+2}+3a_{4i+3})\rgroup\%5=0\\ \iff\lgroup\sum_{i=0}^{[(n-1)/4]}(a_{4i+3}a_{4i+2}a_{4i+1}a_{4i}-5a_{4i+3})\rgroup\%5=0
n%5=0⟺⟮i=0∑[(n−1)/4](a4i+2a4i+1+4a4i+2+3a4i+3)⟯%5=0⟺⟮i=0∑[(n−1)/4](a4i+3a4i+2a4i+1a4i−5a4i+3)⟯%5=0
x
=
6
x=6
x=6时,
S
x
=
{
1
,
2
,
4
,
2
,
4
,
⋯
}
S_x=\{1,2,4,2,4,\cdots\}
Sx={1,2,4,2,4,⋯},则
n
%
6
=
0
⟺
⟮
a
0
+
∑
i
=
1
[
(
n
−
1
)
/
2
]
a
2
i
a
2
i
−
1
⟯
%
6
=
0
n\%6=0\iff\lgroup a_0+\sum_{i=1}^{[(n-1)/2]}a_{2i}a_{2i-1}\rgroup\%6=0
n%6=0⟺⟮a0+i=1∑[(n−1)/2]a2ia2i−1⟯%6=0
x
=
7
x=7
x=7时,
S
x
=
{
1
,
2
,
4
,
1
,
2
,
4
,
⋯
}
S_x=\{1,2,4,1,2,4,\cdots\}
Sx={1,2,4,1,2,4,⋯},则
n
%
7
=
0
⟺
⟮
∑
i
=
0
[
(
n
−
1
)
/
3
]
a
3
i
+
2
a
3
i
+
1
a
3
i
⟯
%
7
=
0
n\%7=0\iff\lgroup\sum_{i=0}^{[(n-1)/3]}a_{3i+2}a_{3i+1}a_{3i}\rgroup\%7=0
n%7=0⟺⟮i=0∑[(n−1)/3]a3i+2a3i+1a3i⟯%7=0
x
=
8
x=8
x=8时,
S
x
=
{
1
,
2
,
4
,
0
,
0
,
0
,
⋯
}
S_x=\{1,2,4,0,0,0,\cdots\}
Sx={1,2,4,0,0,0,⋯},则
n
%
8
=
0
⟺
a
2
a
1
a
0
%
8
=
0
n\%8=0\iff a_2a_1a_0\%8=0
n%8=0⟺a2a1a0%8=0即最低3位能被8整除,也即最低3位为000(可与
(
111
)
2
(111)_2
(111)2按位与得到最低3位);
x
=
9
x=9
x=9时,
S
x
=
{
1
,
2
,
4
,
8
,
7
,
5
,
1
,
2
,
4
,
8
,
7
,
5
,
⋯
}
S_x=\{1,2,4,8,7,5,1,2,4,8,7,5,\cdots\}
Sx={1,2,4,8,7,5,1,2,4,8,7,5,⋯},则
n
%
9
=
0
⟺
⟮
∑
i
=
0
[
(
n
−
1
)
/
6
]
(
a
6
i
+
2
a
6
i
+
1
+
4
a
6
i
+
2
+
8
a
6
i
+
3
+
7
a
6
i
+
4
+
5
a
6
i
+
5
)
⟯
%
9
=
0
⟺
⟮
∑
i
=
0
[
(
n
−
1
)
/
6
]
(
a
6
i
+
3
a
6
i
+
2
a
6
i
+
1
a
6
i
+
2
a
6
i
+
5
a
6
i
+
4
+
5
a
6
i
+
4
+
a
6
i
+
5
)
⟯
%
9
=
0
n\%9=0\iff\lgroup\sum_{i=0}^{[(n-1)/6]}(a_{6i}+2a_{6i+1}+4a_{6i+2}+8a_{6i+3}+7a_{6i+4}+5a_{6i+5})\rgroup\%9=0\\ \iff\lgroup\sum_{i=0}^{[(n-1)/6]}(a_{6i+3}a_{6i+2}a_{6i+1}a_{6i}+2a_{6i+5}a_{6i+4}+5a_{6i+4}+a_{6i+5})\rgroup\%9=0
n%9=0⟺⟮i=0∑[(n−1)/6](a6i+2a6i+1+4a6i+2+8a6i+3+7a6i+4+5a6i+5)⟯%9=0⟺⟮i=0∑[(n−1)/6](a6i+3a6i+2a6i+1a6i+2a6i+5a6i+4+5a6i+4+a6i+5)⟯%9=0
x
=
10
x=10
x=10时,
S
x
=
{
1
,
2
,
4
,
8
,
6
,
2
,
4
,
8
,
6
,
⋯
}
S_x=\{1,2,4,8,6,2,4,8,6,\cdots\}
Sx={1,2,4,8,6,2,4,8,6,⋯},则
n
%
10
=
0
⟺
⟮
a
0
+
∑
i
=
1
[
(
n
−
1
)
/
4
]
(
2
a
4
i
−
3
+
4
a
4
i
−
2
+
8
a
4
i
−
1
+
6
a
4
i
)
⟯
%
10
=
0
⟺
⟮
a
0
+
∑
i
=
1
[
(
n
−
1
)
/
4
]
(
2
a
4
i
a
4
i
−
1
a
4
i
−
2
a
6
i
a
4
i
−
3
−
10
a
4
i
)
⟯
%
10
=
0
n\%10=0\iff\lgroup a_0+\sum_{i=1}^{[(n-1)/4]}(2a_{4i-3}+4a_{4i-2}+8a_{4i-1}+6a_{4i})\rgroup\%10=0\\ \iff\lgroup a_0+\sum_{i=1}^{[(n-1)/4]}(2a_{4i}a_{4i-1}a_{4i-2}a_{6i}a_{4i-3}-10a_{4i})\rgroup\%10=0
n%10=0⟺⟮a0+i=1∑[(n−1)/4](2a4i−3+4a4i−2+8a4i−1+6a4i)⟯%10=0⟺⟮a0+i=1∑[(n−1)/4](2a4ia4i−1a4i−2a6ia4i−3−10a4i)⟯%10=0