筛法求素数(方法一)
const int maxn = 1000001;
int prime[maxn], num = 0;
bool p[maxn] = {false};
void find_prime(int n)
{
for(int i = 2; i < maxn; i++){
if(p[i] == false){
prime[num++] = i;
if(num >= n) break;
for(int j = 2 * i; j < maxn; j += i) [j] = true; }
}
}
开平方判断素数(方法二)
int is_prime(int n){
for(int i=2;i<=sqrt(n);i++){
if(n%i==0) return 0;
}
return 1;
}
利用素数的特点来求取素数
素数=6X+1 素数 =6X-1
bool isPrime(int n){
if(n==3||n==2) return true;
//不在6的倍数两侧的一定不是素数
if(n%6!=1||n%6!=5) return fasle;
for(int i=5;i<=sqrt(n);i+=6){
if(n%i==0||n%(i+2)==0) return false;
}
return true;
}
bool isPrime(int n){
if(n==3||n==2) return true;
double n1,n2;
n1=n+1;
n2=n-1;
if(n1%6==0||n2%6==0) return true;
return false;
}