素数的判断
素数筛选,判断小于MAXN的数那些是素数那些不是,不是素数若i不是素数notprime[i]=true,否则notprime[i]=false;
void init(){
memset(notprime,false,sizeof(notprime));
notprime[0]=notprime[1]=true;
for(long long i=2;i<MAXN;i++){
if(i*i>MAXN){
continue;
}
for(long long j=i*i;j<MAXN;j+=i){//因为i*i之前的数已经筛选过了,所以从i*i开始就行了,因为i*i肯定不是素数,那么i*i不断加上i肯定也不是素数
notprime[j]=true;
}
}
}
素数筛选
prime[0]代表1—-MAXN中素数的个数
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
const int MAXN=10100;
int prime[MAXN];
void get_Prime(){
memset(prime,0,sizeof(prime));
for(int i=2;i<=MAXN;i++){
if(!prime[i]){
prime[++prime[0]]=i;
}
for(int j=1;j<=prime[0]&&prime[j]<=MAXN/i;j++){
prime[prime[j]*i]=1;
if(i%prime[j]==0) {
break;
}
}
}
}
int main(){
get_Prime();
for(int i=1;i<=prime[0];i++){
printf("%d\n",prime[i]);
}
return 0;
}