HDU - 2136 Largest prime factor

版权声明:如果转载,请注明出处。 https://blog.csdn.net/S_999999/article/details/81950792

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<bits/stdc++.h>
using namespace std;
int isprime[1000010],LPF[1000010];
void prime_id(void){
	int cur =0;
	memset(isprime,0,sizeof(isprime));
	LPF[1] = 0;
	for(int i =2;i<=1000010;i++)//由于要记录素因子标号,这里不是 i*i;
	   if(isprime[i]==0){ 
	        LPF[i] = ++cur;
	    for(int j=i+i;j<=1000010;j+=i)
	       {
	       	 isprime[j] = -1;
	       	 LPF[j] = cur;
		   }
	}
	       
}
int main(void){

     long long int n;
     prime_id();
     while(scanf("%d",&n)!=EOF){
     	
     	printf("%d\n",LPF[n]);
	 }


return 0; 
} 

猜你喜欢

转载自blog.csdn.net/S_999999/article/details/81950792
今日推荐