参考:http://blog.csdn.net/acresume/article/details/7675231
#include<stdio.h>
#include<string.h>
#define N 1000005
int lpf[N];
int main()
{
memset(lpf,0,sizeof(lpf));
int i,j,k,n;
int ans=1;
lpf[1]=0;
for(i=2;i<N;i++)
{
if(lpf[i])
continue;
lpf[i]=ans++;
for(j=i<<1;j<N;j+=i)
lpf[j]=lpf[i];
}
while(~scanf("%d",&n))
printf("%d\n",lpf[n]);
}