#include <iostream>
using namespace std;

int main() {
    long long n;
    cin >> n;
    bool first = true;
    for (long long i = 2; i * i <= n; ++i) {
        while (n % i == 0) {
            if (first) {
                cout << i;
                first = false;
            } else {
                cout << " " << i;
            }
            n /= i;
        }
    }
    if (n > 1) {
        if (first) {
            cout << n;
        } else {
            cout << " " << n;
        }
    }
    return 0;
}

https://www.nowcoder.com/discuss/727521113110073344

思路:

1.输入处理:读取输入的整数n。

2.遍历因数:从2开始遍历可能的因数,直到当前因数的平方超过剩余的目标数n。

3.试除并记录:对于每个因数i,如果能整除n,则不断除以i并记录该因数,直到无法整除为止。

4.处理剩余数:如果遍历结束后剩余的数大于1,说明该数本身是一个质数,直接输出。

5.输出格式控制:使用first确保输出的第一个质因子前没有空格,后续质因子前添加空格,避免末尾多余空格。