1.
void init() //预处理[1,1e6]范围内的素数
{
//i既是【2,1e6】的数,又是下面for循环中每个素数的倍数(2倍到1e6倍)
for(int i=2; i<1000000; i++)
{
if(!isprime[i])
prime[num_prime++]=i;
for(int j=0; j<num_prime&&i*prime[j]<maxn; j++)
{
isprime[i*prime[j]]=1;
if(i%prime[j]==0)
break;
}
}
}
2.
void ss()
{
int i,j;
memset(a,0,sizeof(a));
a[1]=1;
for(i=2; i<=1000000; i++)
{
if(a[i]==0)
for(j=i+i;j<=1000000;j+=i)
a[j]=1;
}
}