文章目录
质数
定义
质数(英文名:Primenumber)又称素数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。而大于1又不是指数的正整数称为合数(规定1既不是质数也不是合数)。
质数的Basic Information
发展历史
质数的研究最早可追溯到古埃及。古希腊的毕达哥拉斯学派,欧几里得,和埃拉托斯特尼等人对质数有不少研究。在公元前 1550 年左右的古埃及的莱因德数学纸草书中就有对素数与对合数完全不同类型的记录。古希腊的毕达哥拉斯学派(英语:Pythagoras)对质数有不少研究。他们把“2”排除在质数之外,因为“2”不是“真正的数” 。公元前300年左右的欧几里得(希腊语:Ευκλειδης)所著的《几何原本》包含与素数有关的重要定理,如有无限多个素数,以及算术基本定理。埃拉托斯特尼(古希腊语:Eratosthenes Sieve)提出的埃拉托斯特尼筛法是用来计算素数的一个简单方法。近现代数学中,皮埃尔·德·费马,法国博学家马林·梅森,德国数学家克里斯蒂安·哥德巴赫和瑞士数学家欧拉等人得到了一些关于质数的重要成果。1640年,皮埃尔·德·费马(法语:Pierre de Fermat)叙述了费马小定理,费马还研究了费马数的素数。法国博学家马林·梅森(法语:Marin Mersenne)发现了一类素数,即梅森素数。 德国数学家克里斯蒂安·哥德巴赫(德语:Goldbach C)在 1742 年写给欧拉的一封信中提出了哥德巴赫的猜想,即每个偶数都是两个素数之和 。瑞士数学家欧拉(德语:Leonhard Euler)有许多和质数有关的成果。他证明了素数倒数和的无穷级数会发散 。法国数学家阿德里安-马里·勒让德与德国数学家约翰·卡尔·弗里德里希·高斯各自独立证明了素数定理。法国数学家雅克·所罗门·阿达马和比利时数学家夏尔-让·德拉瓦莱·普桑完成了素数定理的初等证明。不过质数依然有许多悬而未决的理论,比如著名的哥德巴赫猜想等。
——摘自百度百科
作用
- 密码学:质数在密码学中起着关键作用,特别是在公钥加密算法如RSA中。这些算法的安全性基于大质数的分解难度。所谓的公钥就是将想要传递的信息在编码时加入质数,编码之后传送给收信人,任何人收到此信息后,若没有此收信人所拥有的密钥,则解密的过程中(实为寻找素数的过程),将会因为找质数的过程(分解质因数)过久,使即使取得信息也会无意义。
- 计算机科学:在计算机科学中,质数被用于生成随机数,特别是在安全随机数生成器中。此外,质数还被用于设计和分析算法,如素数筛法。我们今天就要讲这个
质数的相关定理
1.算数基本定理
任何一个大于1的正整数都能唯一分解为有限个质数的乘积
2.质数分布定理
对于正实数 x x x ,定义 π ( x ) \pi(x) π(x) 为不大于 x x x 的质数的个数,则有: π ( x ) ≈ x I n x \pi (x) \approx \frac{x}{Inx} π(x)≈Inxx
由此我们可以给出第 n n n 个质数 p ( n ) p(n) p(n) 的渐进估计: p ( n ) ≈ n l n n p(n) \approx nlnn p(n)≈nlnn
质数的判定
易错提醒:若整数b除以非零整数a,商为整数,且余数为零,b为被除数,a为除数,即a|b,读作“a整除b”或“b能被a整除”。
试除法
内容:若一个数 N N N 为合数,则一定存在一个能够整除这个数的 k k k ,其中 2 ≤ k ≤ N 2 \le k \le \sqrt N 2≤k≤N
证明:对于任意的 N N N 若存在 u u u 使得 u u u 能整除 N N N ,那么一定存在 N u \frac{N}{u} uN,使 N u \frac{N}{u} uN可以除尽 N N N,故有方程 N / u = u N/u = u N/u=u;所以 u = N u = \sqrt N u=N;
因此我们只需要扫描 2 → N 2 \to \sqrt N 2→N 之间所有的整数,并且一次检查他们能否整除 N N N ,若都不能,则为质数,若有一个可以,则为合数
bool isprime(){
for (int i=2;i*i<=n;i++){
if (n%i==0)return false;
}
return true;
}
此代码时间复杂度为 O ( N ) O(\sqrt N) O(N)
六倍原理试除法
内容:大于等于5的质数一定和6的倍数相邻,但与6的倍数相邻的不一定是素数,但有可能是6倍邻数的倍数。
命题1:大于等于5的素数必定为6倍邻数证明
证明:
6倍以外的数分别有:6n+1,6n+2,6n+3,6n+4,6n+5,其中6n+2,6n+3,6n+4三个数都可以分解:
6n+2=2(3n+1)
6n+3=3(2n+1)
6n+4=2(3n+2)
所以以上三个数必不可能是素数,剩下的只有6n+1,6n+5可能存在素数,命题得证。
命题2:6n+1和6n+5,只可能为6m+1和6m+5的倍数。
证明:
首先,6m+2,6m+4为偶数,不可能是6n+1,6n+5这个两个奇数的因数,自然就不用判断。
然后,6m+3=3(2m+1),所以6m+3必为3的倍数,但是因为 6 n + 1 3 = 2 n + 1 3 \frac{6n+1}{3}=2n+\frac{1}{3} 36n+1=2n+3