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
问题描述: 求最大素因子的在素数表中的位置.。
例:74最大素因子为37,位置为12。
1 2 3 5 7 11 13 17 19 23 29 31 37
0 1 2 3 4 5 6 7 8 9 10 11 12
代码如下:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int prime[1000000 + 5];
int main()
{
memset(prime, 0, sizeof(prime));
int k = 1; //记录最大素数因子的位置
for (int i = 2; i < 1000000; i++)
{
if (!prime[i])
{
prime[i] = k;
for (int j = 2 * i; j < 1000000; j += i)
prime[j] = k; //暂存最大素数因子位置
k++;
}
}
int n;
while (scanf("%d",&n)==1) //scanf输入较快
{
printf("%d\n", prime[n]); //printf输出较快
}
return 0;
}