Total Submission(s): 7169 Accepted Submission(s): 2175 |
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
|
学到了,一直t,直到改成i*j<Max用来当做判定条件才过
#include<bits/stdc++.h> using namespace std; typedef long long ll; #define INF 0x3f3f3f3f #define Max int(1e6+10) int b[Max]; bool is(int x) { for(int i=2;i<=sqrt(x);i++) if(x%i==0) return 0; return 1; } int main() { int n,i,j,k=0; for(i=1;i<Max;i++) { if(is(i)) { for(j=1;i*j<Max;j++) b[j*i]=k; k++; } } while(~scanf("%d",&n)) { printf("%d\n",b[n]); } return 0; }