Pagini recente » Cod sursa (job #88463) | Cod sursa (job #2394402) | Cod sursa (job #2056160) | Cod sursa (job #183201) | Cod sursa (job #496197)
Cod sursa(job #496197)
#include<cstdio>
int prim[500000];
const int N=1<<20;
const int MOD=9973;
bool c[N];
void ciur()
{
int i,j;
for (i=2;i*i<N;++i)
if (c[i]==false)
for (j=i*i;j<N;j+=i)
c[j]=true;
for (i=2;i<N;++i)
if (c[i]==false)
prim[++prim[0]]=i;
}
void fisiere()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
}
void prelucreaza(long long n)
{
int e,nd=1,p;
long long sd=1;
int nn=1;
while(prim[nn]*prim[nn]<=n)
{
if(n%prim[nn])
{ ++nn;
continue;
}
e=0;
p=1;
while (n%prim[nn]==0)
{
++e;
p=p*prim[nn];
p=p%MOD;
n=n/prim[nn];
}
if (e)
{
nd=nd*(e+1);
p=p*prim[nn]%MOD;
sd=sd*(p-1)/(prim[nn]-1)%MOD;
}
++nn;
}
if (n!=1)
{
nd=nd*2;
p=n%MOD*n%MOD;
sd=sd*(p-1)/(n-1)%MOD;
}
printf ("%d %d\n",nd,(int)sd);
}
void citeste()
{
int i,t;
long long n;
fisiere();
scanf("%d",&t);
for (i=1;i<=t;++i)
{
scanf("%lld",&n);
prelucreaza(n);
}
}
int main()
{
ciur();
citeste();
return 0;
}