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;
}