1 素数整除性质
我们知道,素数
p
p
p(
p
≥
2
p \ge 2
p≥2)是正因数仅有
1
1
1和
p
p
p的数,不是素数的整数
m
m
m(
m
≥
2
m\ge 2
m≥2)叫做合数:
素
数
:
2
,
3
,
5
,
7
,
11
,
13
,
17
,
19
,
23
,
29
,
31
,
⋯
合
数
:
4
,
6
,
8
,
9
,
10
,
12
,
14
,
15
,
16
,
18
,
20
,
⋯
素数:2,3,5,7,11,13,17,19,23,29,31,\cdots \\ 合数:4,6,8,9,10,12,14,15,16,18,20,\cdots
素数:2,3,5,7,11,13,17,19,23,29,31,⋯合数:4,6,8,9,10,12,14,15,16,18,20,⋯
下面这条引理是很重要的,但并不显然。
引理:令 p p p是素数,假设 p p p整除乘积 a b ab ab,则 p p p整除 a a a或 p p p整除 b b b。下面来证明这条引理。
证明:
如果
p
p
p整除
a
a
a,则证明完毕。现在假设
p
p
p不整除
a
a
a。考虑
g
c
d
(
a
,
p
)
gcd(a,p)
gcd(a,p),既然它整除
p
p
p那么它就是
1
1
1或
p
p
p,又因为
p
p
p不整除
a
a
a,所以
g
c
d
(
a
,
p
)
=
1
gcd(a,p)=1
gcd(a,p)=1。根据线性方程定理,我们可以求得方程:
p
x
+
a
y
=
1
px + ay=1
px+ay=1
的整数解
x
,
y
x,y
x,y,现在方程两边同时乘以
b
b
b得到:
p
b
x
+
a
b
y
=
b
pbx + aby = b
pbx+aby=b
显然
p
p
p整除
p
b
x
pbx
pbx,又因为我们已知
p
p
p整除
a
b
y
aby
aby,所以
p
p
p整除
b
b
b。
进一步,我们可以将这条引理推广到多个因数的乘积形式,就得到了下面这条定理。
定理(素数整除性质):假设素数 p p p整除乘积 a 1 a 2 ⋯ a r a_1a_2\cdots a_r a1a2⋯ar,则 p p p整除 a 1 , a 2 , ⋯ , a r a_1,a_2,\cdots ,a_r a1,a2,⋯,ar中至少一个因数。
利用上述引理可以很容易地证明这条定理。
2 算术基本定理
算术基本定理:每个整数 n ≥ 2 n\ge 2 n≥2可唯一分解成素数乘积: n = p 1 p 2 ⋯ p r n=p_1p_2\cdots p_r n=p1p2⋯pr。
这里分解出来的素数乘积并非指不同的素数,例如 300 = 2 ∗ 2 ∗ 3 ∗ 5 ∗ 5 300=2*2*3*5*5 300=2∗2∗3∗5∗5,并且不认为因数重排是新的因数分解。下面来证明该定理。
证明:
首先证明数
n
n
n可以以某种方式分解成素数乘积,利用数学归纳法。首先
2
=
2
,
3
=
3
,
4
=
2
∗
2
2=2,3=3,4=2*2
2=2,3=3,4=2∗2成立,假设对于
n
≤
N
n\le N
n≤N都成立,我们需要验证
N
+
1
N+1
N+1时结论成立。
因此就有两种可能性,首先如果
N
+
1
N+1
N+1是素数,那么它本身就已经分解成素数;其次
N
+
1
N+1
N+1是合数,这表明
N
+
1
N+1
N+1可分解为
n
1
n
2
n_1n_2
n1n2(
2
≤
n
1
,
n
2
≤
N
2\le n_1,n_2 \le N
2≤n1,n2≤N),根据假设,
n
1
,
n
2
n_1,n_2
n1,n2都可以分解成素数的乘积:
n
1
=
p
1
p
2
⋯
p
r
n
2
=
q
1
q
2
⋯
q
r
n_1 = p_1p_2\cdots p_r\\ n_2=q_1q_2\cdots q_r
n1=p1p2⋯prn2=q1q2⋯qr
因此
N
+
1
=
p
1
p
2
⋯
p
r
q
1
q
2
⋯
q
r
N+1=p_1p_2\cdots p_rq_1q_2\cdots q_r
N+1=p1p2⋯prq1q2⋯qr,所以
N
+
1
N+1
N+1也可以分解成素数的乘积,得证。
接下来证明唯一性,即只有一种这样的因数分解。我们假设
n
n
n能够被分解为两种形式的素数乘积:
n
=
p
1
p
2
⋯
p
r
n
=
q
1
q
2
⋯
q
s
n = p_1p_2\cdots p_r\\ n=q_1q_2\cdots q_s
n=p1p2⋯prn=q1q2⋯qs
首先,
p
1
∣
n
p_1|n
p1∣n,所以
p
1
∣
q
1
q
2
⋯
q
s
p_1|q_1q_2\cdots q_s
p1∣q1q2⋯qs,根据上面提到的素数整除性质,
p
1
p_1
p1整除至少一个
q
i
q_i
qi,不妨让它等于
q
1
q_1
q1,又因为
q
1
q_1
q1也是素数,因此
p
1
=
q
1
p_1=q_1
p1=q1,这样我们就可以同时消掉
p
1
,
q
1
p_1,q_1
p1,q1得:
p
2
⋯
p
r
=
q
2
⋯
q
s
p_2\cdots p_r=q_2\cdots q_s
p2⋯pr=q2⋯qs
同理我们可以消去
p
2
,
p
3
,
⋯
p_2,p_3,\cdots
p2,p3,⋯,如果左边的
p
p
p先被消去,那么左边就是
1
1
1,因此右边也应该是
1
1
1,所以这两个分解的因数个数是相同的即
r
=
s
r=s
r=s,并且重排一个序列可以得到另外一个序列。所以唯一性也得到了证明。
3 因数分解的方法
当 n n n很小时,我们可以挨个试,但是 n n n比较大的时候,因数分解就很困难了。一种方法是用素数 2 , 3 , 5 , 7 , ⋯ 2,3,5,7,\cdots 2,3,5,7,⋯去除 n n n,知道找到一个因数,再对剩余部分继续尝试。
如果 n n n本身不是素数,则必有整除 n n n的素数 p ≤ n p\le \sqrt n p≤n。因为如果 p p p是整除 n n n的最小素数,则 n = p m , m ≥ p n=pm,m\ge p n=pm,m≥p,从而 n = p m ≥ p 2 n=pm\ge p^2 n=pm≥p2,两边同时开平方就可以得到这个结论。这个结论给出了将任何整数 n n n分解成素数乘积的方法:
用小于等于 n \sqrt n n的每个数(或正好每个素数)试除它。如果没有求得整除 n n n的整数,则 n n n本身是素数,否则求得的第一个因数是素数 p p p,再对 m = n / p m=n/p m=n/p重复这个过程。
这个过程效率非常低,但是对适当大小的数,在计算机上工作得还是很好的。但是对非常非常大的数,要计算出因数分解,就需要很长时间了。因此就产生了两个紧密相关的问题:
- 如何分辨已知数 n n n是素数还是合数?
- 如果 n n n是合数,如何将它分解成素数的乘积?
第一个问题更容易回答,即便求不出来大数的因数,我们以可以知道它是否是合数。用类似的方式我们可以求得很大的素数 p , q p,q p,q这样如果给定一个 n = p q n=pq n=pq,就不可能通过分解 n n n来获得数 p p p与 q q q。这个事实也是用数论建立高度安全密码的关键所在。
4 参考资料
- 《数论概论》第四版 P31-P35