90分代码:
#include<bits/stdc++.h>
using namespace std;
const int N=100;
int n,k;
int tot=0,cnt=0,num=0,flag=0;
int ans[N],sum[N];
int a[16]={0,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47};
inline void solve(int x)
{
for(int i=1;i<=15;i++)
{
while(x%a[i]==0) x/=a[i],sum[a[i]]++;
}
}
int main()
{
cin>>n>>k;
solve(n);
for(int i=1;i<=15;i++)
{
if(sum[a[i]]>0) for(int j=1;j<=sum[a[i]];j++) ans[++cnt]=a[i];
num+=sum[a[i]],tot+=sum[a[i]]*a[i];
}
if(num+k-tot<=0){
cout<<-1<<endl;
return 0;
}
if(num==0){
cout<<k-n+1<<endl;
for(int i=1;i<=k-n;i++) cout<<"1 ";
cout<<n<<endl;
return 0;
}
cout<<num+k-tot<<endl;
for(int i=1;i<=k-tot;i++) cout<<"1 ";
for(int i=1;i<=cnt;i++) cout<<ans[i]<<" ";
cout<<endl;
return 0;
}