素数是什么意思(判断素数的5种方法)

什么是素数的定义?

1.素数即是质数,它的定义是:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做素数。

常见的素数有2、3、5、7等等,素数的个数是无穷的,以36N为单位,随着N的增大,素数的个数以波浪形式渐渐增多。在一个大于1的数a和它的2倍之间必存在至少一个素数。如2和它的2倍4之间,存在的素数是2和3。

素数的应用范围很广泛,比如密码学、汽车变速箱齿轮、导弹和鱼雷、生命周期等等。其中,在汽车变速箱齿轮的设计上,相邻的两个大小齿轮齿数设计成质数,可增强齿轮的耐用度,减少故障。

2.素数又称质数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。在大于1的整数中,只能被1和这个数本身整除的数,如2,3,5,7,11。也叫质数。

它的性质是质数的个数是无穷的。欧几里得的《几何原本》中有一个经典的证明。

3.素数的定义:只有两个正因数(1和自己)的自然数即为素数。

质数又称素数。指整数在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。换句话说,只有两个正因数(1和自己)的自然数即为素数。比1大但不是素数的数称为合数。

1和0既非素数也非合数。素数在数论中有着很重要的作用。

如何快速判断一个数是素数?

根据数的不同范围和要求,我总结主要有三种常用的方法判断一个数是否是素数

一. 一般方法

直接判断在sqrt(n)范围内有没有整数能整除n,如果有则不是素数,否则就是素数。

素数是什么意思(判断素数的5种方法)

但这种方法比较暴力,如果n过大是不行的,而且一个一个去计算太慢了,如果我要找出10000000以内的所有素数,那计算量是相当大,效率不高。

二. 基于线性筛法

如果要找出10000000以内的所有素数,那么就要使用线性筛法了。基本原理是:先把所有整数列出来,然后把2的倍数全部剔除,然后是三的,以此类推,遍历所有素数,把倍数全部划去。划去的是合数,剩下的就是素数了。

那么,如果n特别大的时候呢,比如n=10^12,又怎么判断呢? 这时候就需要Miller-Rabin素数测试方法了。

三. Miller-Rabin素数测试

它是基于二次探测定理进行判断的,定理描述如下

代码实现比较长,截图在下面

一般情况下第二种和第三种方法用得最多。

发表评论

登录后才能评论