Pagini recente » Cod sursa (job #2777879) | Cod sursa (job #2201150) | Cod sursa (job #2077871) | Cod sursa (job #2077869) | Cod sursa (job #419360)
Cod sursa(job #419360)
#include<stdio.h>
FILE *f,*g;
long put(long a,long b)
{ long i=2; long rez=a;
for(i=2;i<=b;i++) rez=rez*a;
return rez;
}
int t; long i,viz[1005000],j,n,prim[1005000],x,s,nr,d,k;
int main()
{ f=fopen("ssnd.in","r"); g=fopen("ssnd.out","w");
fscanf(f,"%d",&t);
i=2;
while(i<=100000) { if(viz[i]==0) { j=2*i; while(j<=100000) { viz[j]=1; j+=i; } } if(i==2) i++; else i+=2; }
n=0;
for(i=2;i<=100000;i++) if(!viz[i]) { n++; prim[n]=i; }
for(i=1;i<=t;i++)
{ fscanf(f,"%ld",&x);
s=1; nr=1; d=1;
while(prim[d]*prim[d]<=x&&x!=1)
{ k=0;
while(x%prim[d]==0) { x/=prim[d]; k++; }
nr=nr*(k+1); s=s*(put(prim[d],k+1)-1)/(prim[d]-1);
d++;
}
if(x!=1) { nr=nr*2; s=s*(x*x-1)/(x-1); }
fprintf(g,"%ld %ld\n",nr,s);
}
fclose(g);
return 0;
}