/*对比于素数打表,二者都是素数筛法的应用*/
#include <stdio.h>
#define Max 1000000
int valid[Max];
void PrimeLocation()
{
int i,j,sum=0;
for(i=2;i<=Max;i++)/*这里的素数location打表刚刚好和素数打表反过来*/
{ /*这里是先赋初始值0,然后把位置给相应的素数下*/
if(valid[i]==0)
{
++sum;
valid[i]=sum;
for(j=i+i;j<=Max;j+=i)
valid[j]=sum;
}
}
}
int main()
{PrimeLocation();/*把函数放在这里就是AC,放在scanf之后就是 time limit*/
int n;
while(~scanf("%d",&n))
{
printf("%d\n",valid[n]);
}
return 0;
}
#include <stdio.h>
#define Max 1000000
int valid[Max];
void PrimeLocation()
{
int i,j,sum=0;
for(i=2;i<=Max;i++)/*这里的素数location打表刚刚好和素数打表反过来*/
{ /*这里是先赋初始值0,然后把位置给相应的素数下*/
if(valid[i]==0)
{
++sum;
valid[i]=sum;
for(j=i+i;j<=Max;j+=i)
valid[j]=sum;
}
}
}
int main()
{PrimeLocation();/*把函数放在这里就是AC,放在scanf之后就是 time limit*/
int n;
while(~scanf("%d",&n))
{
printf("%d\n",valid[n]);
}
return 0;
}