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