您的位置:首页 > 其它

HDU2136:Largest prime factor

2013-03-29 20:34 211 查看
Problem Description
Everybody knows any number can be combined by the prime number.

Now, your task is telling me what position of the largest prime factor.

The position of prime 2 is 1, prime 3 is 2, and prime 5 is 3, etc.

Specially, LPF(1) = 0.



Input
Each line will contain one integer n(0 < n < 1000000).



Output
Output the LPF(n).



Sample Input
1
2
3
4
5




Sample Output
0
1
2
1
3






#include <stdio.h>
#include <string.h>

const int N = 1000000;
int hash[N+5];
int prime[N+5];

void sushu()
{
    int  i,j;
    memset(prime,0,sizeof(prime));
    hash[1] = 0;
    int flag = 0;
    for(i = 2; i<=N; i++)
    {
        if(!prime[i])
        {
            hash[i] = ++flag;
            for(j = i; j<=N; j+=i)
            {
                prime[j] = i;
            }
        }
    }
}

int main()
{
    int i;
    memset(hash,0,sizeof(hash));
    sushu();
    while(~scanf("%d",&i))
    {
        if(i == 1)
        printf("0\n");
        else
        {
            int k = prime[i];
            printf("%d\n",hash[k]);
        }
    }

    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: