题解 | 质数因子

质数因子

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;
}

在官方题解的基础上做了优化,包括不输出多余空格,输入检查

全部评论

相关推荐

程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务