Pagini recente » Cod sursa (job #906688) | Cod sursa (job #1049649) | Cod sursa (job #1317039) | Cod sursa (job #2690325) | Cod sursa (job #1267706)
#include <cstdio>
#define MAX 1000001
#define MOD 9973
char ciur[1000001];
int v[78500];
void ciuruire()
{
int d,m;
ciur[0]=ciur[1]=1;
d=2;
while(d*d<=MAX)
{
for(m=2; m<=MAX/d; m++)
ciur[m*d]=1;
d++;
while(ciur[d]==1)
d++;
}
}
int pow(int a, int n)
{
int p;
p=1;
while(n>0)
{
if(n%2==1)
p=p*a;
a=a*a;
n=n/2;
}
return p;
}
int main()
{
freopen("ssnd.in" , "r" , stdin);
freopen("ssnd.out" , "w" , stdout);
int n,j,i,p,nrdiv=1,cnr,x,nr;
long long sdiv=1;
ciuruire();
for(i=2,j=1; i<=MAX; i++)
{
if(ciur[i]==0)
{
v[j]=i;
j++;
}
}
scanf("%d" , &n);
for(i=1; i<=n; i++)
{
scanf("%d" , &nr);
cnr=nr;
nrdiv=sdiv=1;
if(ciur[nr]==0)
printf("2 %d\n", nr+1);
else
{
for(j=1; v[j]*v[j]<=nr; j++)
{
p=0;
while(nr%v[j]==0)
{
p++;
nr/=v[j];
}
if(p!=0)
{
nrdiv=nrdiv*(p+1);
x=pow(v[j],(p+1));
x=x-1;
x=x/(v[j]-1);
sdiv=(sdiv*x)%MOD;
}
}
if(nr>1)
{
nrdiv*=2;
sdiv=sdiv*(v[j]*v[j]-1)/(v[j]-1)%MOD;
}
printf("%d %lld\n", nrdiv, sdiv);
}
}
return 0;
}