#include<iostream>
#include<math.h>
using namespace std;
bool isprime(long &n)
{
if(n==1)
{
return false;
}
else
{
for(int i=2;i*i<=n;i++)
{
if(n%i==0) return false;
}
}
return true;
}
//这道题其实是一个把合数分解成质数相乘的题
int main()
{
long n;
cin>>n;
while(!isprime(n))//n不是素数才能进入这个循环
{
for(long i=2;i*i<=n;i++)
{
// if(n%i==0&&isprime(i))这里已经没有必要判断i是不是素数了
//因为一个数被合数整除前,已经被小于它的素数整除了
if(n%i==0)
{
n/=i;
cout<<i<<' ';
break;
}
}
}
cout<<n<<' ';
return 0;
} 
京公网安备 11010502036488号