void prime(){
for(i=2;i<=500;i++)
if(!b[i])
for(j=2;i*j<=1000;j++)
b[i*j]=1;
}//筛法
依次去除2,3,4……的倍数的数,剩下的就是质数
欧拉筛:
int pd[100000010];
bool v[100000010];
int a, b;
void sai() {
memset(v, 1, sizeof(v));
//memset(pd, 0, sizeof(pd));
int i, j, cnt;
for (i = 0; i <= b; i++) {
pd[i] = 0;
}
cnt = 0;
for (i = 2; i <= b; i++) {
if (v[i]) {
pd[cnt++] = i;
}
for (j = 0; j < cnt && j * pd[i] <= b; j++) {
v[i * pd[j]] = 0;
if (i % pd[j] == 0) {
break;
}
}
}
}