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
Sample Output
0 1 2 1 3
用常规方法会超时,所以这里用筛选法很好
#include <stdio.h>
#define MAX 1000000
int dawn[MAX]={0};
int ty[MAX]={0};
int main()
{
int n;
for(int i=2,n=1;i<MAX;i++){
if(dawn[i]==0){
ty[i]=n++;
for(int j=i;j<MAX;j=j+i){ //把所有倍数给排除掉
dawn[j]=i;
}
}
}
while(~scanf("%d",&n)){
printf("%d\n",ty[dawn[n]]);
}
}