#include<iostream>
using namespace std;
#define MAXN 1000001
int rec[MAXN],keep[MAXN];
void make()
{
int ans=0;
for(int i=5;i<=MAXN;i+=4)
{
for(int j=5;j<=MAXN;j+=4)
{
int sum=i*j;
if(sum>MAXN) break;
if(rec[i]==0&&rec[j]==0) //i和j是否为素数
rec[sum]=1;
else
rec[sum]=-1; //不是两个素数的乘积
}
}
for(int i=1;i<=MAXN;i++)
{
if(rec[i]==1)
ans++;
keep[i]=ans;
}
}
int main()
{
int n;
make();
while(cin>>n,n)
{
// cout<<rec[45];
cout<<n<<" "<<keep[n]<<endl;
}
return 0;
}
poj3292
最新推荐文章于 2019-04-13 10:00:00 发布