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.
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
2
3
4
5
Sample Output
0
1
2
1
3
1
2
1
3
Author
Wiskey
Source
题意:就是求最大素因子的在素数表中的位置.
#include <stdio.h>
#include <math.h>
#include <queue>
#include <vector>
#include <stack>
#include <map>
#include <string>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
#define N 1000000
int a[N];
void pd(){
int n=,i,t,j;
memset(a,,sizeof(a));
for(i=;i<=N;i++)//对当前数的每个数的倍数进行赋值素数编号 可以覆盖哦 因为要覆盖为最大因子
{
if(a[i]==)
{
n++;//素数i的位置
for(j=i;j<=N;j+=i)//构造出j的暂时最大素数因子的位置
a[j]=n;
}
}
}
int main()
{
int i;
pd();
while(~scanf("%d",&i))
{
printf("%d\n",a[i]);
}
return ;
}