SP503 题解
Strelitzia_ · · 题解
题目大意
多组询问给出
思路
注意到
具体来讲,一个合数
我们在处理区间时把数组下标减去左端点,这样标记合数的数组只需要开到
signed main(){
isp[0]=isp[1]=1;
for(int i=2;i<=MAXX;i++){
if(!isp[i]) p[++hop]=i;
for(int j=1;j<=hop&&i*p[j]<=MAXX;j++){
isp[i*p[j]]=1;
if(i%p[j]==0) break;
}
}
t=read();while(t--){
memset(isP,0,sizeof(isP));l=read(),r=read();
for(int i=1;i<=hop;i++)
for(int j=l/p[i];j<=r/p[i];j++){
if(j==1) j++;
isP[j*p[i]-l]=1;
}
for(int i=0;i<=r-l;i++) if(!isP[i]) printf("%lld\n",i+l);
}
return 0;
}