HDU 2136 Largest prime factor
阿新 • • 發佈:2018-12-12
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> #include <algorithm> #include <iostream> #include <math.h> #include <vector> using namespace std; const int maxn=1000010; int Isn[maxn]; int n; vector<int>ve; int loc[maxn]; void init() { memset (Isn,0,sizeof(Isn)); } void Is_prime() { loc[1]=0; for (int i=2,k=1;i<maxn;i++) { if(!Isn[i]) { loc[i]=k++; for (int j=i;j<maxn;j+=i) { Isn[j]=i; } } } } int main() { init(); Is_prime(); while (scanf("%d",&n)!=EOF) { printf("%d\n",loc[Isn[n]]); } return 0; }