Pagini recente » Cod sursa (job #911613) | Cod sursa (job #2594727) | Cod sursa (job #486188) | Cod sursa (job #196859) | Cod sursa (job #586616)
Cod sursa(job #586616)
#include <cstdio>
#include <cmath>
int n, d, h, f, a[4000], prev[4000], rs;
double v[4000], g, sol;
char p[4000];
int main()
{
freopen("nummst.in","r",stdin);
freopen("nummst.out","w",stdout);
scanf("%d",&n);
int i, s, x, j;
for (i=2; i*i<=n; i++)
{
if (!(n%i))
{
d=i;
break;
}
}
s=d;
d=n/d;
for (x=2; x<=s; x++)
for (i=x+x; i<=s; i+=x) p[i]=1;
for (i=2; i<=s; i++)
if (!p[i]) a[++f]=i;
if (s==2)
{
printf("%d %d\n",d,d);
return 0;
}
v[0]=1;
for (i=1; i<=f; i++)
for (j=s; j>=a[i]; j--)
if (v[j-a[i]])
{
g=v[j-a[i]]+log((double)a[i]);
if (g>v[j])
{
v[j]=g;
prev[j]=i;
}
}
for (i=2; i<=s; i++)
if (v[i]>sol)
{
rs=i;
sol=v[i];
}
i=rs;
while (i)
{
printf("%d ",a[prev[i]]*d);
i-=a[prev[i]];
}
for (i=1; i<=s-rs; i++) printf("%d ",d);
return 0;
}