Pagini recente » Cod sursa (job #175436) | Cod sursa (job #526039) | Cod sursa (job #1415280) | Cod sursa (job #265545) | Cod sursa (job #179232)
Cod sursa(job #179232)
#include <stdio.h>
int nr,x[50005],a[10005];
void ciur(int n)
{
int p[50005]={0};
int i,j;
p[1]=1;
for (i=2;i<=n&&i*i<=n;i++)
if (!p[i])
{
nr++;
x[nr]=i;
p[i]=1;
for (j=i*i;j<=n;j+=i)
p[j]=1;
}
}
int main()
{
//ciur(50000);
FILE *in,*out;
int i,p,u,p2,u2,n,j;
in=fopen("divizori.in","r");
out=fopen("divizori.out","w");
fscanf(in,"%d",&n);
u=1;
p=1;
a[1]=1;
for (i=1;i<=nr&&n!=1;i++)
{
p=1;
while (!(n%x[i])&&n)
{
p2=u+1;
u2=u;
for (j=u;j>=p;j--)
{
// fprintf(out,"%d ",a[j]*x[i]);
u2++;
a[u2]=a[j]*x[i];
}
p=p2;
u=u2;
n/=x[i];
}
}
if (n!=1)
{
u2=u;
for (j=u;j>=p;j--)
{
//fprintf(out,"%d ",a[j]*n);
u2++;
a[u2]=a[j]*n;
}
u=u2;
}
fprintf(out,"%d\n",u);
for (i=1;i<=u;i++)
fprintf(out,"%d ",a[i]);
fclose(in);
fclose(out);
return 0;
}