(Hdu Acm Step 2.1.3)Largest prime factor

来源:互联网 发布:天威网络不稳定 编辑:程序博客网 时间:2024/05/22 15:24

题目:
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
题目大意:给你一个数,让你求这个数最大质因子在素数中的位置,比如说2的最大质因子是2,位置就是1, 4和8的最大质因子也是2,位置还是1; 3的最大质因子是3,位置是2,6和9最大质因子也是3,位置是2。
AC代码:

#include<stdio.h>#include<string.h>#define max 1000001int a[max];/*同一个数的质因子位置可能被多次复写。但是由于是从小到大遍历,这就保证了最后一次写入的是该数的最大质因子的位置比如说第一次i=2时,a[2],a[4],a[6],a[8],a[10],a[12]最大质因子的位置是1;在第二次 i=3时,a[3],a[6],a[9],a[12],最大质因子的位置等于是2, 这时a[6]和a[12]会将第一次的值覆盖 */int main(){    int n;    int i,j,count = 1;    memset(a, 0, sizeof(a));    a[1] = 0;    for(i = 2; i < max; i++)    {        if(a[i] == 0)        {            for(j = i; j < max; j += i)                a[j] = count;            count++;        }    }    while(scanf("%d", &n) != EOF)     {       printf("%d\n", a[n]);    }    return 0;}