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
Sampl Output
0
1
2
1
3
题意:求一个数的最简因式中最大素数因子在所有的素数中位置,位置从0开始。例如4 1*4和2*2 由于4不是素数,2才是所以输出1
思路:
将素数筛出来,并且记录它们的位置!!!
#include <bits/stdc++.h>
using namespace std;
#define max 1000001
int a[max];
int main()
{
int i,k,n,j;
for(i=2;i<max;i++)
a[i]=-1;
a[1]=0;
k=0;
for(i=2;i<max;i++)
{
if(a[i]==-1)
{
k++;
for( j=i;j<max;j+=i)
a[j]=k;
}
}
ios::sync_with_stdio(false);
while(cin>>n)
{
cout<<a[n]<<endl;
}
return 0;
}