素数:指在大于1的自然数中,只能被1和它本身整除的自然数。
1.朴素的筛选法
bool isprime(int n){
if(n<=1) return false;
if(n==2) return true;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0) return false;
}
return true;
}
2.比朴素法更高效的筛选法
原理:任何数的整数倍必定不是素数,大于2的偶数也必定不是素数
#include<bits/stdc++.h>
using namespace std;
const int n=1000005;
int isprime[1000005];
void setprime(){
memset(isprime,1,sizeof(isprime));
for(int i=2;i<=sqrt(n);i++){
if(isprime[i]){
for(int j=i+i;j<=n;j+=i){
isprime[j]=0;
}
}
}
}