#include <iostream>
using namespace std;
void divide(int x)
{
for (int i = 2; i <= x / i; i ++ )
{
if (x % i == 0)
{
/* 条件满足时,则可得[2, i - 1]都不是x的因子,但是i是x的一个因子,故x不是质数
* 但是由于循环条件是 x / i,则可知[2, i - 1]同样也不是i的因子,即i是质数
* 即当if条件满足时,i是x的质因子 */
int s = 0;
while (x % i == 0) x /= i, s ++ ;
while (s -- ) printf("%d ", i);
}
}
if (x > 1) printf("%d", x);
}
int main()
{
int x;
cin >> x;
divide(x);
return 0;
}

京公网安备 11010502036488号