#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确保输出的第一个质因子前没有空格,后续质因子前添加空格,避免末尾多余空格。



京公网安备 11010502036488号