#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
bitset<maxn>vis;
int p[maxn/10],s[maxn],k,x;
int main(){
for(int i=5;i<maxn;i+=4){
if(!vis[i]) p[++k]=i;
for(int j=i*2;j<maxn;j+=i) vis[j]=1;
}
for(int i=1;i<=k;i++){
for(int j=1;j<=k&&p[i]*p[j]<maxn;j++) vis[p[i]*p[j]]=1;
}
for(int i=1;i<maxn;i++) s[i]=s[i-1]+vis[i];
cin>>x;
while(x) cout<<x<<' '<<s[x]<<'\n',cin>>x;
}
哪儿错了?
回复请@。