Pagini recente » Cod sursa (job #651111) | Cod sursa (job #3207604) | Cod sursa (job #445578) | Cod sursa (job #1671561) | Cod sursa (job #1150381)
#include <stdio.h>
#define M 9973
using namespace std;
int nrp, nrput, aux;
long long int nrdiv, sdiv, n, prim[1000001];
bool p[1000001];
void ciur()
{
for (int i=2; i<=1000000; i++)
{
if (p[i]==false)
{
prim[nrp++]=i;
for (int j=2*i; j<=1000000; j+=i)
p[j]=true;
}
}
}
int ridput(int b, int p)
{
int r=1;
while (p)
{
if (p%2==0)
{
b*=b;
p>>=1;
}
p--;
r*=b;
}
return r;
}
void rezolv(int x)
{
while(n%x==0)
{
nrput++;
n/=x;
}
nrput++;
sdiv=(sdiv*((ridput(x, nrput)-1)/(x-1))%M)%M;
nrdiv*=nrput;
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
ciur();
int t;
for (scanf("%d", &t); t--;)
{
nrdiv=sdiv=1;
scanf("%lld", &n);
for (int i=0; prim[i]*prim[i]<=n; i++)
if (n%prim[i]==0)
{
rezolv(prim[i]);
nrput=0;
}
if (n>1)
{
nrdiv<<=1;
sdiv*=((n*n-1)/(n-1))%M;
}
printf("%lld %lld\n", nrdiv, sdiv%M);
}
return 0;
}