Pagini recente » Cod sursa (job #901110) | Cod sursa (job #755105) | Cod sursa (job #2570747) | Cod sursa (job #2451626) | Cod sursa (job #1014256)
#include<stdio.h>
#include<math.h>
int n,i,j,p[100013],np,y,nr;
long long x,nrd,sd;
bool k[1000013];
bool da;
inline int pow(int a, int b)
{
if(b==0)return 1;
long long x=a,y=1;
while(b!=1)
if(b%2==0) x=(x*x)%9973,b/=2;
else y=(x*y)%9973,--b;
return(x*y)%9973;
}
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&n);
for(i=2;i<100000;++i)k[i]=1;
for(i=2,np=0;i<100000;++i)if(k[i]){for(j=i;i*j<100000;++j) k[i*j]=0;p[np++]=i;}
/*p[0]=2;
p[1]=3;
p[2]=5;
np=3;
x=7;
while(x<100013)
{
da=1;
for(i=0;i<np;++i)if(x%p[i]==0){da=0;break;}
if(da)p[np++]=x;
x+=2;
}*/
for(int q=0;q<n;++q)
{
scanf("%lld",&x);
nrd=sd=1;
y=(int)sqrt(x);
for(i=0;p[i]<=y+1;++i)
{
nr=0;
while(x%p[i]==0) x/=p[i],++nr;
if(nr==0)continue;
nrd*=(nr+1);
sd*=((pow(p[i],nr+1)-1)/(p[i]-1));
}
if(x!=1)nrd=(nrd*2)%9973,sd=(sd*(x+1))%9973;
printf("%lld %lld\n",nrd,sd);
}
return 0;
}