看了N就不知道哪里WA了 。。。。。上网看了大神们的帖子之后才知道题目看错了。。。。。朋友们仔细看题很重要啊。。。
筛法打表就不会超时了。。
#include<stdio.h>
#include<string.h>
int ans[1000002];
void solution(){
memset(ans,0,sizeof(ans));
int i,j;
for(i=5;i<=1000001;i+=4){
for(j=5;j<=1000001;j+=4){
//printf("%d %d\n",i,j);
if(i*j>1000001)
break;
//printf("yes\n");
if(ans[i]==0&&ans[j]==0){
ans[i*j]=1;
//printf("yes\n");
}
else
ans[i*j]=2;
}
}
int res=0;
for(i=1;i<=1000001;i++){
if(ans[i]==1)
res++;
ans[i]=res;
}
}
int main(){
int n,i;
//printf("%d\n",ans[25]);
solution();
while(scanf("%d",&n)!=EOF){
if(n==0)
break;
printf("%d %d\n",n,ans[n]);
}
return 0;
}