YACS 531第三届上海市青少年算法竞赛(小学组)线上同步赛 T5 阶乘的因数的c++答案
时间: 2024-12-28 21:38:52 浏览: 9
YACS 531上海市青少年算法竞赛中,T5阶乘的因数问题是一个常见的数学计算题目。给定一个数字n(这里是阶乘),你需要找出所有因子并计算它们的数量。这是一个关于求解大整数分解的问题。
以下是一个简单的C++代码示例,用于查找阶乘的因子:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 计算阶乘函数
long long factorial(int n) {
if (n == 0 || n == 1)
return 1;
else
return n * factorial(n - 1);
}
// 求解阶乘的因子
void countFactors(long long fact, vector<long long>& factors) {
for (int i = 1; i <= sqrt(fact); ++i) {
if (fact % i == 0) {
// 如果i是因子,添加到factors列表
factors.push_back(i);
// 如果i不是事实完全除尽的结果,还需要添加另一因子(如果存在)
if (i != fact / i) {
factors.push_back(fact / i);
}
}
}
}
int main() {
int n;
cout << "请输入一个正整数n: ";
cin >> n;
// 计算阶乘
long long fact = factorial(n);
// 初始化存储因子的向量
vector<long long> factors;
countFactors(fact, factors);
cout << "阶乘 " << fact << " 的因数有: ";
for (const auto &factor : factors) {
cout << factor << " ";
}
cout << "\n
阅读全文