线性筛
int prime[10000];
bool mark[10010]={0};
int s_prime()//拿最小素数筛
{
int cnt=0;
for(int i=2;i<=10000;i++)
{
if(mark[i]==0)
prime[cnt++]=i;
for(int j=0;j<cnt&&prime[j]*i<=10000;j++)
{
mark[prime[j]*i]=1;
if(i%prime[j]==0)//要拿最小素数筛,此时表明
//prime[j]为i的最小素数,若往后则会出现更大的素数筛掉本应是最小素数筛掉的数
//注意是用prime[j]去筛而不是i
break;
}
}
}
sqrt(n)筛,若y为大于sqrt(n)的素数,n/y则必然出现对等的小于sqrt(n)的因子,所以只需要筛到sqrt(n)即可