题解 | 质数因子
质数因子
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; }
在官方题解的基础上做了优化,包括不输出多余空格,输入检查