Pagini recente » Cod sursa (job #1735920) | Cod sursa (job #2897015) | Cod sursa (job #2633497) | Monitorul de evaluare | Cod sursa (job #956528)
Cod sursa(job #956528)
#include <cstdio>
#include <queue>
using namespace std;
queue <int> q;
int P[500];
int res[500];
int zz[500];
int mal[500];
int p;
int N;
int gg,ss;
bool isPrime(int x)
{
for(int i=0; i < p && P[i] * P[i] <= x;i++)
{
if((x%P[i]) == 0) return 0;
}
return 1;
}
int main()
{
freopen("nummst.in","r",stdin);
freopen("nummst.out","w",stdout);
scanf(" %d",&N);
for(int i=2;;i++)
{
if(!(N%i))
{
ss=i;
gg=N/i;
break;
}
}
for(int i=2;i<=ss;i++)
{
if(isPrime(i)) P[p++]=i;
}
int t;
int aa=ss;
if(ss < 300) while(1) q.push(1);
while(aa > 2 && ss)
{
int i;
for(i=0;i<p;i++)
{
t=mal[i];
if(!t) mal[i]=P[i];
else mal[i]=P[i]*mal[i];
t=mal[i]-t;
if(t < 0) break;
if(ss >= t)
{
zz[i]++;
res[i]=mal[i];
ss-=t;
}
else if(!i) break;
}
if(!i) break;
}
for(int i=0;i<p;i++)
if(res[i]) printf("%d ",res[i]*gg);
while(ss--) printf("%d ",gg);
printf("\n");
return 0;
}