文章目录
素数的定义
一个大于1的整数,如果他的正因数只有1及他本身,就叫作素数(质数);否则称其为合数。
素数的定理
定理1(素数筛的原理)
设a是任一大于1的整数,则a的除1外的最小正因数q是质数,并且当a是合数时,满足:
q
≤
a
q≤\sqrt{a}
q≤a
(通俗的讲:一个数的最小正因数是质数,合数的最小正因数且小于根号a)
证明(反证法):
假设a的最小正因数q不是素数,则q除了1及本身外至少还有一个正因数s,且
s
<
q
s<q
s<q。
由
q
∣
a
q|a
q∣a且
s
∣
q
s|q
s∣q,可得
s
∣
a
s|a
s∣a,所以s也是a的一个正因数。
这与q是最小正因数相矛盾,所以假设不成立。
当a是合数时,
a
=
a
1
∗
q
a=a_1*q
a=a1∗q。假设q是最小正因数,若
q
>
a
q>\sqrt{a}
q>a,则
a
1
<
a
a_1<\sqrt{a}
a1<a,这与q是最小正因数相矛盾。所以假设矛盾。
说明;素数筛可以在
O
(
n
∗
n
)
O(n*\sqrt{n})
O(n∗n)时间内找出区间中的所有素数,无需使用辗转相除法。 具体实现可以看笔者的其他博客。
定理2
若p是质数,a是任一整数,则a能被p整除或p与a互质。
证明:显然成立。
推论
设
a
1
,
a
2
,
.
.
.
,
a
n
a_1,a_2,...,a_n
a1,a2,...,an是n个整数,p是质数,若
p
∣
a
1
∗
a
2
∗
.
.
.
∗
a
n
p|a_1*a_2*...*a_n
p∣a1∗a2∗...∗an,则p一定能整除某一个
a
k
a_k
ak。
证明:(反证法)
假设任意
a
k
a_k
ak都不能被p整除,即
(
P
,
a
i
)
=
1
,
i
=
1
,
2
,
3...
(P,a_i)=1,i=1,2,3...
(P,ai)=1,i=1,2,3...
所以
(
P
,
a
1
a
2
.
.
.
a
n
)
=
1
(P,a_1a_2...a_n)=1
(P,a1a2...an)=1,这与
P
∣
a
1
a
2
.
.
.
a
n
P|a_1a_2...a_n
P∣a1a2...an矛盾。
定理3(算术基本定理)
任意大于1的整数能够被表示为质数的乘积,即任意大于1的整数a,都可以被唯一表示为若干素数的乘积,如下:
a
=
p
1
∗
p
2
∗
.
.
.
∗
p
n
,
p
1
≤
p
2
≤
.
.
.
≤
p
n
a=p_1*p_2*...*p_n,p_1≤p_2≤...≤p_n
a=p1∗p2∗...∗pn,p1≤p2≤...≤pn
其中,
p
1
,
p
2
,
.
.
.
,
p
n
p_1,p_2,...,p_n
p1,p2,...,pn为素数。
这个定理的意思是,可以将素数理解为单位元,所有的整数都可以由素数构成的。
证明:采用数学归纳法,这里不赘述。
推论1
任意一个大于1的整数a,能够被唯一的写成
a
=
p
1
k
1
∗
p
2
k
2
∗
.
.
.
∗
p
n
k
n
,
p
1
<
p
2
<
.
.
.
<
p
n
a=p_1^{k_1}*p_2^{k_2}*...*p_n^{k_n},p_1<p_2<...<p_n
a=p1k1∗p2k2∗...∗pnkn,p1<p2<...<pn
其中,k_i∈Z。
这个式子的意义是:将质数因子变为严格递增的序列。方便后续表示与计算。
证明:
将定理3的多个连乘的p进行组合就行。
推论2
任意一个大于1的整数a的因子d,也能够被唯一的写成
d
=
p
1
h
1
∗
p
2
h
2
∗
.
.
.
∗
p
n
h
n
,
k
i
≥
h
i
≥
0
d=p_1^{h_1}*p_2^{h_2}*...*p_n^{h_n},k_i≥h_i≥0
d=p1h1∗p2h2∗...∗pnhn,ki≥hi≥0
其中,k_i∈Z。
这个式子的意义是:将质数因子也可以进行一般化的表示。
比如100可以表示为
100
=
2
∗
50
=
2
2
∗
5
2
100=2*50=2^2*5^2
100=2∗50=22∗52
而因子50可以表示为
50
=
2
∗
5
2
50=2*5^2
50=2∗52
推论3(非常重要)
设A,B是任意两个正整数,且满足:
A
=
p
1
a
1
∗
p
2
a
2
∗
.
.
.
∗
p
n
a
n
,
a
i
≥
0
A=p_1^{a_1}*p_2^{a_2}*...*p_n^{a_n},a_i≥0
A=p1a1∗p2a2∗...∗pnan,ai≥0
B
=
p
1
b
1
∗
p
2
b
2
∗
.
.
.
∗
p
n
b
n
,
b
i
≥
0
B=p_1^{b_1}*p_2^{b_2}*...*p_n^{b_n},b_i≥0
B=p1b1∗p2b2∗...∗pnbn,bi≥0
则
(
a
,
b
)
=
p
1
r
1
∗
p
2
r
2
∗
.
.
.
∗
p
n
r
n
(a,b)=p_1^{r_1}*p_2^{r_2}*...*p_n^{r_n}
(a,b)=p1r1∗p2r2∗...∗pnrn
[
a
,
b
]
=
p
1
s
1
∗
p
2
s
2
∗
.
.
.
∗
p
n
s
n
[a,b]=p_1^{s_1}*p_2^{s_2}*...*p_n^{s_n}
[a,b]=p1s1∗p2s2∗...∗pnsn
其中,
r
i
=
m
i
n
(
a
i
,
b
i
)
,
s
i
=
m
a
x
(
a
i
,
b
i
)
r_i=min(a_i,b_i),s_i=max(a_i,b_i)
ri=min(ai,bi),si=max(ai,bi)。
证明:(这里不进行严谨证明,只进行直观证明)
最大公约数一定是形如这种的格式
d
=
p
1
h
1
∗
p
2
h
2
∗
.
.
.
∗
p
n
h
n
,
k
i
≥
h
i
≥
0
d=p_1^{h_1}*p_2^{h_2}*...*p_n^{h_n},k_i≥h_i≥0
d=p1h1∗p2h2∗...∗pnhn,ki≥hi≥0。所以需要让
h
i
h_i
hi尽可能的小,同时还要满足d|a,d|b。所以
r
i
r_i
ri只能取最小值。同理,需要让
s
i
s_i
si尽可能的小,同时还要满足a|[a,b],b|[a,b],所以
s
i
s_i
si只能取两者的最大值,才能实现全局的最小值。
定理4 (质数的个数是无穷的)
质数的个数是无穷的。
证明:(反证法)
假设素数有限,且为
p
1
,
p
2
,
.
.
.
,
p
n
p_1,p_2,...,p_n
p1,p2,...,pn。
设存在一个数N,满足
N
=
p
1
∗
p
2
∗
.
.
.
∗
p
n
+
1
N=p_1*p_2*...*p_n+1
N=p1∗p2∗...∗pn+1成立,且由于N>1,所以一定存在一个素因数
p
N
p_N
pN。
若:
(1)
p
N
∈
p
1
,
p
2
,
.
.
.
,
p
n
p_N∈{p_1,p_2,...,p_n}
pN∈p1,p2,...,pn
已知
p
N
∣
N
p_N|N
pN∣N,且
p
N
∣
(
p
1
∗
p
2
∗
.
.
.
∗
p
n
)
p_N|(p_1*p_2*...*p_n)
pN∣(p1∗p2∗...∗pn),而
N
=
p
1
∗
p
2
∗
.
.
.
∗
p
n
+
1
N=p_1*p_2*...*p_n+1
N=p1∗p2∗...∗pn+1,所以
p
N
∣
(
N
−
p
1
∗
p
2
∗
.
.
.
∗
p
n
+
1
)
=
p
N
∣
1
p_N|(N-p_1*p_2*...*p_n+1)=p_N|1
pN∣(N−p1∗p2∗...∗pn+1)=pN∣1,这与素数的定义相矛盾。所以
p
N
∉
p
1
,
p
2
,
.
.
.
,
p
n
p_N∉{p_1,p_2,...,p_n}
pN∈/p1,p2,...,pn。
(2)
p
N
∉
p
1
,
p
2
,
.
.
.
,
p
n
p_N∉{p_1,p_2,...,p_n}
pN∈/p1,p2,...,pn
说明有存在其他素数
p
N
p_N
pN不在有限素数中的其他素数,与假设矛盾。
综上,素数的个数有限。
几个猜想
1、孪生素数猜想
存在无穷多个素数P,使得P+2也是素数。
背景: 在欧几里得证明素数的数量无限后,提出了这个猜想,但是目前还没有人实现证明。
说明:
如果想找到一个k连续的合数组。 可以使用下面的方法:
p
=
(
k
+
1
)
!
+
k
p=(k+1)!+k
p=(k+1)!+k。
就可以找到一个间隔为k的合数组
p
,
p
+
1
,
.
.
.
,
p
+
k
−
1
{p,p+1,...,p+k-1}
p,p+1,...,p+k−1。
2、等差素数列猜想(已经被证明正确)
长度为k的素数等差数列,公差能够被小于k的所有素数整除。
背景: 被拉格朗日和华林证明了。
3、费马数猜想(已经被证明错误)
F
m
=
2
2
m
+
1
F_m=2^{2^{m}}+1
Fm=22m+1(m=1,2,3,…)是素数。
背景: 费马证明了
F
1
F_1
F1至
F
4
F_4
F4是素数,于是有了这个猜想。由欧拉证明
F
5
F_5
F5不是素数。
于是有了新的猜想:
F_m在m>5之后都是合数。
4、梅森数与双完全数(已经被证明正确)
梅森数:
M
n
=
2
n
−
1
M_n=2^n-1
Mn=2n−1
双完全数:因数之和等于2倍的自己的数。比如6,1+2+3+6=12。
双完全数的充要条件:
2
n
−
1
M
n
2^{n-1}M_n
2n−1Mn