#include <iostream> #include <cmath> using namespace std; int main() { long num; long sq; cin >> num; sq = sqrt(num); for(int i=2; i<=sq; i++) { // 检查i是否为num的因子,如果是则将其从num中除去 // 如果i的倍数为num的因子,则其同样也被从num中除去了 while (i<=sq && num % i == 0) { num = num / i; cout << i << ' '; } } // num中<= sqrt(num)的因子都被去除了,即此时的num不能被任何小于sqrt(num)的数整除 // 那么其必然不能被任何大于sqrt(num)的数整除,因此剩下的num必定为质数 if (num != 1) { cout << num << ' '; } return 0; }