Pagini recente » Cod sursa (job #2638709) | Cod sursa (job #2840111) | Cod sursa (job #2640173) | Cod sursa (job #2543106) | Cod sursa (job #419367)
Cod sursa(job #419367)
#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<=400000) { if(viz[i]==0) { j=2*i; while(j<=400000) { viz[j]=1; j+=i; } } if(i==2) i++; else i+=2; }
n=0;
for(i=2;i<=400000;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)%9973); s=(((put(prim[d],k+1)-1)/(prim[d]-1)%9973)*s)%9973;
d++;
}
if(x!=1) { nr=(nr*2)%9973; s=((((x*x-1)/(x-1))%9973)*s)%9973; }
fprintf(g,"%ld %ld\n",nr,s);
}
fclose(g);
return 0;
}