描述
求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。
输入描述:
可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。
输出描述:
对于每组数据,输出N的质因数的个数。
示例1
输入:
120
输出:
5
思路:
只需要判断因数是否能够整除当前的数,而无需判断因数本身是否为质数。质因数分解是将一个数分解为一系列质数的乘积,而我们只需要关注能够整除的因数,因为如果一个非质数能够整除当前的数,那么它一定可以被分解为更小的因数的乘积。
例如,考虑将120分解为质因数的过程:
120= 2 * 60
60 = 2 * 30
30 = 2 * 15
15 = 3 * 5
在这个过程中,我们并没有判断2、3、5是否为质数,只需要判断它们能否整除当前的数。因为即使它们不是质数,它们也可以分解为更小的因数的乘积,而最终会得到正确的质因数分解结果。
在质因数分解问题中,我们只需要关注因数能否整除当前的数,而无需判断因数本身是否为质数,极大减少了代码的冗余运算,但依然可以得到正确的结果。
源代码:
#include<iostream>
#include<cmath>
using namespace std;
//例题6.9 质因数的个数
int main()
{
int n;
while (cin >> n) {
int res = 0;
for (int i = 2; i <= sqrt(n); i++) {
while (n % i == 0) {
res++;
n /= i;
}
}
if (n > 1) {
res++;
}
cout << res << endl;
}
return 0;
}
提交结果:
编辑切换为居中文章来源:https://www.toymoban.com/news/detail-643947.html
添加图片注释,不超过 140 字(可选)文章来源地址https://www.toymoban.com/news/detail-643947.html
到了这里,关于[保研/考研机试] KY7 质因数的个数 清华大学复试上机题 C++实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!