素数筛法
如果我们需要多次判断是不是素数时,比起无数次的枚举、测试,还是提前筛出一张素数表比较好
Eratosthenes筛法
一般情况下够用的筛法。复杂度nlnlnn,关键是不容易写错。还有别问我这个复杂度怎么算出来的。实现非常简单。
#include <iostream>
#include <cstring>
using namespace std;
#define MAXN 1000001
int main(){
bool notprime[MAXN];
memset(notprime,0,sizeof(notprime));
notprime[1]=1;
for(int a=2;a<MAXN;a+=(a==2?1:2))
if(!notprime[a]) //如果不加的话复杂度nlnn