本题需要注意超时的问题。首先对于遍历,只需要遍历到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;
}