题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2136
题解
水题
埃氏筛的同时把这个素数的倍数都标记为这个素数的序号
从小到大更新的同时就能保证一个数的序号是它的最大质因数

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int f[1000010],n;
int main()
{
    int tot=0;
    for(int i=2;i<=1e6;i++)
        if(!f[i])
        {
            ++tot;
            for(int j=i;j<=1e6;j+=i)    f[j]=tot;
        }
    while(~scanf("%d",&n))
        printf("%d\n",f[n]);
    return 0;
}