1519 - 质因数的个数
求正整数N(N>1)的质因数的个数。
相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。
Input
可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。
Output
对于每组数据,输出N的质因数的个数。
Examples
Input
120 200
Output
5 5
Hint
注意1不是N的质因数;若N为质数,N是N的质因数。
Solution C
#include<stdio.h> int main() { int i,j,b,a[3500],n,m,flag,sum; m=0; for(i=2;i<=31623;i++) { a[0]=2; flag=1; for(j=0;j<=m;j++) { if(i%a[j]==0) flag=0; } if(flag) { m++; a[m]=i; } } while(scanf("%d",&n)!=EOF&&n) { sum=0; for(i=0;i<=m;i++) { while(n%a[i]==0) { n/=a[i]; if(n!=1)sum++; if(n==1){sum++;break;} } } if(n>31623)sum++; printf("%d\n",sum); } return 0; }
Solution C++
#include<stdio.h> #include<math.h> int main () { long long n,i,k; while(scanf("%lld",&n)!=EOF) { for(k=0,i=2;i<=sqrt(n);i++) while(n%i==0) { k++; n/=i; } if(n!=1) k++; printf("%lld\n",k); } return 0; }
Hint
注意1不是N的质因数;若N为质数,N是N的质因数。