分解因数,质因数分解后(同时放进栈里)个数如果小于k,输出-1,否则就输出栈里的k-1个数,然后n/(前k-1个乘积,k=1时为1)
#include<bits/stdc++.h>
using namespace std;
int n,k,m[100005],num=0,res=1,nx;
int main()
{
cin>>n>>k;nx=n;
memset(m,0,sizeof(m));
for(int i=2;i<=nx;i++)
{
while(nx%i==0)
{
nx/=i;
m[i]++;
num++;
}
}
if(k==1)
{
cout<<n;
return 0;
}
if(num<k)
{
cout<<-1;
return 0;
}
for(int i=2;i<=n;i++)
{
if(k==1)break;
while(m[i])
{
if(k==1)break;
cout<<i<<' ';
m[i]--;k--;
res*=i;
}
}
cout<<n/res;
return 0;
}