分解因數,質因數分解後(同時放進棧裏)個數如果小於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;
}