标签:测试数据 i++ return std 不用 描述 个数 否则 for
求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=2*2*2*3*5,
共有5个质因数。
可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。
对于每组数据,输出N的质因数的个数。
1.一个数a的质因数肯定小于sqrt(a),否则两个大于sqrt(a)的书相乘肯定大于a;
2.从2开始试探是否可以整除,如果可以则计数器count++;在这里要注意的是
我们并不用判断i是否是质数,因为它肯定是一个质数。因为我们是从2开始
试探的,假设出现一个i不是质数,其实在i之前肯定该i肯定被小的质数分解了
3. 如果最后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;
}
标签:测试数据 i++ return std 不用 描述 个数 否则 for
原文地址:https://www.cnblogs.com/zhuobo/p/10199932.html