版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhq9695/article/details/82056005
目录
质因数的个数
题目描述
求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。
输入描述:
可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。
输出描述:
对于每组数据,输出N的质因数的个数。
输入
120
输出
5
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<iomanip>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<deque>
#include<algorithm>
using namespace std;
int n,cnt;
int main(){
// freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
while(cin>>n){
cnt=0;
int i=2;
double sqr = sqrt(n);
while(n!=1){
if(n%i==0){ // 无需再判断是否是质数
cnt++; // 例如,能被4整除的数
n/=i; // 一定在i=2的时候被整除过了
}
else {
i++;
if(i>=sqr){ // 若输入的n本身为质数
cnt++; // 则因子只有1和n,大于等于sqrt(n)时,cnt+=1退出即可
break;
}
}
}
cout<<cnt<<endl;
}
return 0;
}