Pagini recente » Cod sursa (job #3147371) | Cod sursa (job #269834) | Cod sursa (job #935159) | Cod sursa (job #2109165) | Cod sursa (job #1162267)
#include <cstdio>
#define MOD 9973
using namespace std;
bool ciur[1000005];
int prim[100000],fact[100000],exp[100000],len;
inline void Ciur()
{
int i,j;
for(i=3;i<=1005;i+=2)
if(!ciur[i])
for(j=i*i;j<=1000000;j+=2*i)
ciur[j]=true;
prim[++prim[0]]=2;
for(i=3;i<=1000000;i+=2)
if(!ciur[i])
prim[++prim[0]]=i;
}
inline long long Pow(int x, int p)
{
long long put=1;
while(p--)
put*=x;
return put;
}
inline void Solve(long long x)
{
int k=0,i,sol;
len=0;
for(i=1;i<=prim[0] && x>1 && 1LL*prim[i]*prim[i]<=x;++i)
{
k=0;
while(x%prim[i]==0)
{
++k;
x/=prim[i];
}
if(k)
{
++len;
fact[len]=prim[i]; exp[len]=k;
}
}
if(x>1)
{
++len;
fact[len]=x; exp[len]=1;
}
for(sol=i=1;i<=len;++i)
sol=(sol*(exp[i]+1))%MOD;
printf("%d ", sol);
for(sol=i=1;i<=len;++i)
sol=(1LL*sol*(Pow(fact[i],exp[i]+1)-1)/(fact[i]-1))%MOD;
printf("%d\n", sol);
}
int main()
{
int T;
long long x;
freopen ("ssnd.in","r",stdin);
freopen ("ssnd.out","w",stdout);
Ciur();
scanf("%d", &T);
while(T--)
{
scanf("%lld", &x);
Solve(x);
}
return 0;
}