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 <cstdio>
#include <cstring>
const int MAX = 1000001;
int LPF[MAX];
int main(int argc, const char* argv[])
{
memset(LPF, 0, sizeof(LPF));
int loc = 1;
for (int i=2; i<MAX; ++i)
{
if (LPF[i] != 0)
{
continue;
}
LPF[i] = loc++;
for (int j=i*2; j<MAX; j+=i)
{
LPF[j] = LPF[i];
}
}
int n = 0;
while (scanf("%d", &n) != EOF)
{
printf("%d\n", LPF[n]);
}
return 0;
}