一般素数筛选方法
void get_prime()
{
int num = 0 ;
memset(vis,false,sizeof(vis));
for(int i = 2 ; i < n ; i ++)
{
if(!vis[i])
{
prime[num++] = i ;
for(int j = 2*i ; j < n ; j += i)
{
vis[j] = true ;
}
}
}
}
不重复素数筛选
int f[1002];//为1,表示为素数
int prime[1002];//素数数组,为2,3,5,7....
int vis[1002];//标记数组
void init(){
int num=0;
memset(f,0,sizeof(f));
memset(prime,0,sizeof(prime));
memset(vis,0,sizeof(vis));
for(int i=2;i<1002;i++)
{
if(!vis[i]) prime[num++]=i,f[i]=1;
for(int j=0;j<num&&i*prime[j]<1002;j++)
{
vis[i*prime[j]] = 1;
if(i%prime[j]==0) break;
}
}
}