Pagini recente » Cod sursa (job #2089116) | Cod sursa (job #541381) | Cod sursa (job #2114638) | Cod sursa (job #997153) | Cod sursa (job #496186)
Cod sursa(job #496186)
#include<cstdio>
int prim[50000];
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);
}
int putere(int x,int p)
{
int pp=1;
while (x&&p)
{
pp=pp*x%MOD;
--p;
}
return pp;
}
void prelucreaza(long long n)
{
int e,sd=1,nd=1,p;
int nn=1;
while(prim[nn]<=n&&n>1&&nn<=prim[0])
{
e=0;
while ((long long)n%(long long)prim[nn]==0)
{
++e;
n=(long long)n/(long long)prim[nn];
}
if (e)
{
nd=nd*(e+1);
p=putere(prim[nn],e+1);
sd=sd*(p-1)/(prim[nn]-1)%MOD;
}
++nn;
}
printf ("%d %d\n",nd,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;
}