判断一个数是否为素数(如何快速判断一个数是素数)
发布时间:2022-09-26 15:42
浏览量:29
根据数的不同范围和要求,我总结主要有三种常用的方法判断一个数是否是素数
一. 一般方法
直接判断在sqrt(n)范围内有没有整数能整除n,如果有则不是素数,否则就是素数。
但这种方法比较暴力,如果n过大是不行的,而且一个一个去计算太慢了,如果我要找出10000000以内的所有素数,那计算量是相当大,效率不高。
二. 基于线性筛法
如果要找出10000000以内的所有素数,那么就要使用线性筛法了。基本原理是:先把所有整数列出来,然后把2的倍数全部剔除,然后是三的,以此类推,遍历所有素数,把倍数全部划去。划去的是合数,剩下的就是素数了。
那么,如果n特别大的时候呢,比如n=10^12,又怎么判断呢? 这时候就需要Miller-Rabin素数测试方法了。
三. Miller-Rabin素数测试
它是基于二次探测定理进行判断的,定理描述如下
代码实现比较长,截图在下面
一般情况下第二种和第三种方法用得最多。
标签: