本题需要注意超时的问题。首先对于遍历,只需要遍历到sqrt(N)即可。其次,题目要求按照有序输出,因此可以在查找质数因子的时候就按照从小到大查询。从2开始查询质数因子,先找到所有的质数因子2。将while循环写在for循环里面可以大大加快程序时间复杂度。
#include<cmath>
using namespace std;
int main() {
int N;
cin >> N;
for (int i = 2; i <= sqrt(N); i++) {
while(N % i == 0) {
cout << i << ' ';
N = N / i;
}
}
if (N > 1) cout << N;
return 0;
}