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.
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<stdio.h> #include<math.h> #include<string.h> int biaoji[1000010]; int cun[1000010]; bool f(int n) { if(n<=1) return false; int sqr=sqrt(1.0*n); for(int i=2;i<=sqr;i++) { if(n%i==0) { return false; } } return true; } int main() { int n; memset(biaoji,0,sizeof(biaoji)); memset(cun,0,sizeof(cun)); int k=1; cun[1]=0; biaoji[0]=1; for(int i=2;i<1000001;i++) { if(biaoji[i]==0&&f(i)==true) { cun[i]=k; biaoji[i]=1; for(int j=i;j<1000001;j+=i) { biaoji[j]=1; cun[j]=k; } k++; } else if(f(i)==false) { biaoji[i]=1; } } while(scanf("%d",&n)!=EOF&&n!=0) { if(n==1) printf("0\n"); else { printf("%d\n",cun[n]); } } }