分解质因子
2026-05-23 15:35:57
发布于:湖北
35阅读
0回复
0点赞
#include <iostream>
#include <cmath>
using namespace std;
int main() {
long long n;
cin >> n;
int ans = 0;
// 枚举所有可能的质因子
for (long long p = 2; p * p <= n; p++) {
if (n % p == 0) {
// p 是质因子,计算其指数 e
int e = 0;
while (n % p == 0) {
n /= p;
e++;
}
// 求最大的 k,使得 k*(k+1)/2 <= e
int k = 0;
while ((k + 1) * (k + 2) / 2 <= e) {
k++;
}
ans += k;
}
}
// 如果 n > 1,说明 n 本身是一个质数,指数为 1
if (n > 1) {
// 对于指数 1,k=1(因为 1*2/2=1 <= 1)
ans += 1;
}
cout << ans << endl;
return 0;
}
这里空空如也



有帮助,赞一个