题目描述
求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。
输入描述:
可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。
输出描述:
对于每组数据,输出N的质因数的个数。
示例1
输入
120
输出
5
解题思路
求解质因数,对N 从2 - sqrt(N) 进行遍历,如果能够整除 i ,说明 i 即为其质因数。
再将 N = N / i 。若 N 是一个无法分解的质因数,那么最后还要加上1。
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <math.h> 4 int main() 5 { 6 long N; 7 int count = 0; 8 while(scanf("%ld",&N)!=EOF) 9 { 10 for(long i= 2;i<sqrt(N);i++) 11 { 12 while(N%i==0) 13 { 14 count++; 15 N = N/i; 16 } 17 } 18 printf("%d",count+1); 19 } 20 return 0; 21 }