如果在有限的时间内
叫你判断9999999997是不是素数
你是否能够完成任务?
如果在有限的时间内
让你找出1000000000内的所有素数
你是否能够完成任务?
不能就看下面的方法(能也要看呀)!!
一、判断是否为素数的方法
1、常规、龟速判断之: one by one
2、另类、快速判断之: 坨 by 坨
3、奇葩、光速判断之:堆 by 堆
二、筛选素数的方法
1、埃氏筛法
埃氏筛法的核心在于
把一个数的根号以内的所有素数的倍数
全部筛去
剩下的就是素数(不包括1)
比如说,10
根号10以内的素数有2、3
把1到10中2与3的倍数筛去
剩下的2、3、5、7就是素数(默认筛去1)
2、欧式筛法
埃氏筛法有一个缺点
它会重复筛除
这就造成了时间和空间的浪费
而欧式筛法就可以解决这个问题
它建立在埃氏筛法的基础上
每次筛除只用最小素数的倍数来筛
这样就可以避免重复筛除
具体解释过程请看代码的注释
今天着重给大家分享了判断素数的三种方法以及两种快速筛选素数的方法
希望大家给我点个赞呀~~~
谢谢大家,你们的支持就是我创作的最大动力!!!!