质因数个数
题目链接
题目描述
求正整数N(N>1)的质因数的个数。相同的质因数需要重复计算。如120 = 2 × \times × 2 × \times × 2 × \times × 3 × \times × 5,共有5个质因数。
解题思路
思路很简答,就遇到一个n%i=0的数,就一直除。
但是要注意一个问题,比如说 求6得质因子个数,当i*i<=6时结束循环,此时i一定是小于3的,按照我们的分析 6应该包含2个质因子(2和3),所以当循环完毕时,要判断一下 n此时的值,若为1 说明已经把质因数找完,若不为1,那么剩下的一定是个质数
代码如下
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
while(scanf("%d",&n)!=EOF) {
int num = 0;
for(int i = 2; i*i<=n; i++) {
while(n%i==0) {
num++;
n /= i;
}
}
if(n != 1) num += 1;
printf("%d\n",num);
}
}