题解 | 质数因子
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
#include <iostream>
#include <vector>
int main() {
// 关闭同步以加速输入输出
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
int n;
std::cin >> n;
// 输入合法性校验
if (n <= 0) {
std::cout << "错误:输入必须为正整数\n";
return 1;
}
std::vector<int> prime_factors;
// 质因数分解核心逻辑
for (int i = 2; 1LL * i * i <= n; ++i) { // 1LL防止i*i溢出
if (n % i == 0) {
while (n % i == 0) {
prime_factors.push_back(i);
n /= i;
}
}
}
// 处理剩余的质数
if (n > 1) {
prime_factors.push_back(n);
}
// 格式化输出(末尾无多余空格)
if (!prime_factors.empty()) {
std::cout << prime_factors[0];
for (size_t j = 1; j < prime_factors.size(); ++j) {
std::cout << " " << prime_factors[j];
}
}
std::cout << "\n";
return 0;
}
在官方题解的基础上做了优化,包括不输出多余空格,输入检查
查看10道真题和解析
