Pagini recente » Cod sursa (job #3182009) | Cod sursa (job #1200407) | Cod sursa (job #3179297) | Cod sursa (job #627305) | Cod sursa (job #629289)
Cod sursa(job #629289)
#include <stdio.h>
#define N 1000000
char l[N+10];
int pr[79000],i,k=1;
long long j,np=1,m,n1,n2;
short t,d,s;
int main () {
freopen ("ssnd.in","r",stdin);
freopen ("ssnd.out","w",stdout);
pr[0]=2;
for (i=1; ((i*i)<<1)+(i<<1)<=N; i++) {
pr[np++]=(i<<1)+1;
if ((l[i>>3]&(1<<(i&7)))==0)
for (j=((i*i)<<1)+(i<<1); (j<<1)+1<=N; j+=(i<<1)+1) l[j>>3]|=(1<<(j&7));
}
for (; (i<<1)+1<=N; ++i)
if ((l[i>>3] & (1<<(i&7)))==0)
pr[np++]=(i<<1)+1;
scanf ("%hd",&t);
for (i=0; i<t; i++) {
scanf ("%lld",&n1);
s=d=1;
for (m=0; pr[m]*pr[m]<=n1; m++) {
if (!(n1%pr[m])) {
k=1;
n2=pr[m];
while (!(n1%pr[m])) {
n1/=pr[m];
k++;
n2*=pr[m];
}
d*=k;
s=s*(n2-1)/(pr[m]-1)%9973;
}
}
if (n1!=1) {
d+=d;
s=s*(n1*n1-1)/(n1-1)%9973;
}
printf ("%hd %hd\n",d,s);
}
fclose (stdin);
fclose (stdout);
return 0;
}