现在小明拿到了一个数字n,现在他想知道,n!的质因数分解的结果是多少?C++代码
时间: 2024-03-24 22:40:42 浏览: 69
以下是用C++实现题目的代码:
```cpp
#include <iostream>
#include <unordered_map>
using namespace std;
unordered_map<int, int> prime_factorization(int n) {
unordered_map<int, int> factors;
int d = 2;
while (n > 1) {
while (n % d == 0) {
factors[d]++;
n /= d;
}
d++;
if (d * d > n) {
if (n > 1) factors[n]++;
break;
}
}
return factors;
}
void print_prime_factorization(int n) {
unordered_map<int, int> factors = prime_factorization(n);
cout << n << "! = ";
bool first = true;
for (auto it = factors.begin(); it != factors.end(); it++) {
if (!first) cout << " * ";
cout << it->first << "^" << it->second;
first = false;
}
cout << endl;
}
int main() {
int n;
cin >> n;
print_prime_factorization(n);
return 0;
}
```
这段代码中,我们使用了unordered_map来记录n!的质因数分解结果,prime_factorization函数用于计算n的质因数分解,print_prime_factorization函数用于输出n!的质因数分解结果。
阅读全文