题目描述
求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=22235,
共有5个质因数。
输入描述:
可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。
输出描述:
对于每组数据,输出N的质因数的个数。
分析:
1.一个数a的质因数肯定小于sqrt(a),否则两个大于sqrt(a)的书相乘肯定大于a;
2.从2开始试探是否可以整除,如果可以则计数器count++;在这里要注意的是
我们并不用判断i是否是质数,因为它肯定是一个质数。因为我们是从2开始
试探的,假设出现一个i不是质数,其实在i之前肯定该i肯定被小的质数分解了
- 如果最后n是一个无法分解的大于1(1不是质数)的质数,count++;
#include <iostream> using namespace std; int main(){ long N; while(cin >> N){ int count = 0; for(int i = 2; i * i < N; i++){ while(N % i == 0){ count++; N /= i; } } if(N >= 2) count++; cout << count << endl; } return 0; }
来源:https://www.cnblogs.com/zhuobo/p/10199932.html