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
Author
Wiskey
Source
HDU 2007-11 Programming Contest_WarmUp
题意:就是求最大素因子的在素数表中的位置.
1 #include <stdio.h> 2 #include <math.h> 3 #include <queue> 4 #include <vector> 5 #include <stack> 6 #include <map> 7 #include <string> 8 #include <cstring> 9 #include <algorithm> 10 #include <iostream> 11 using namespace std; 12 #define N 1000000 13 int a[N]; 14 void pd(){ 15 int n=0,i,t,j; 16 memset(a,0,sizeof(a)); 17 for(i=2;i<=N;i++)//对当前数的每个数的倍数进行赋值素数编号 可以覆盖哦 因为要覆盖为最大因子 18 { 19 if(a[i]==0) 20 { 21 n++;//素数i的位置 22 for(j=i;j<=N;j+=i)//构造出j的暂时最大素数因子的位置 23 a[j]=n; 24 } 25 } 26 } 27 int main() 28 { 29 int i; 30 pd(); 31 while(~scanf("%d",&i)) 32 { 33 printf("%d\n",a[i]); 34 } 35 return 0; 36 }
时间: 2024-10-23 14:02:22