Pagini recente » Cod sursa (job #794106) | Cod sursa (job #1633955) | Cod sursa (job #2674369) | Cod sursa (job #562931) | Cod sursa (job #926054)
Cod sursa(job #926054)
#include<stdio.h>
#define max 1000005
#define mod 9973
long long n;
int t,k,p[max];
bool vis[max];
void ciur()
{
p[++k]=2;
for(int i=3;i<max;i+=2)
if(!vis[i])
{
p[++k]=i;
for(int j=i+i;j<max;j+=i)
vis[j]=1;
}
}
int pow(int x,int p)
{
int sol=1,a=x;
for(int i=0; (1<<i) <= p; ++i)
{ if( (1<<i)&p )
sol*=a;
a*=a;
}
return sol;
}
void solve()
{
scanf("%lld",&n);
int nrd=1,suma=1;
for(int i=1; i<=k && 1LL*p[i]*p[i]<=n;i++)
{
if( !(n%p[i]) )
{
int pr=0;
while( ! ( n%p[i] ) )
{
n/=p[i];++pr;
}
nrd*=(pr+1);
int p1 = (pow(p[i],pr+1)-1)%mod;
int p2 = pow(p[i]-1,mod-2)%mod;
suma=(((suma*p1)%mod)*p2)%mod;
}
}
if(n>1)
{
nrd*=2;
suma=(1LL*suma*(n+1)%mod);
}
printf("%d %d\n",nrd,suma);
}
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
ciur();
scanf("%d",&t);
for(int i=1;i<=t;i++)
solve();
}