HDU 2136 Largest prime factor

素数筛选法
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxm=1e6+10;
int f[maxm];
void Init()
{
    int cnt=1;
    memset(f,0,sizeof(f));
    for(int i=2;i<=maxm;i++)
    {
        if(!f[i])
        {
            f[i]=cnt++;
            for(int j=i;j<maxm;j+=i)
            {
                f[j]=f[i];
            }
        }
    }
}
int main()
{
    int n;
    Init();
    while(scanf("%d",&n)!=EOF)
    {
        printf("%d\n",f[n]);
    }
    return 0;
}

你可能感兴趣的:(HDU 2136 Largest prime factor)