Pagini recente » Cod sursa (job #1453664) | Cod sursa (job #652155) | Cod sursa (job #1168817) | Cod sursa (job #998225) | Cod sursa (job #492395)
Cod sursa(job #492395)
#include<stdio.h>
#define Ld 1LL*1000000
#define Mod 9973
int i,j,d,fact[80010],ciur[Ld+10],ex,P,T;
long long n,NrDiv,Sum;
void precalc()
{
int i,j;
fact[++P] = 2;
for( i = 3 ; i <= Ld ; i+=2 )
if( !ciur[i] )
{
fact[++P] = i;
if( (long long)i * (long long)i <= Ld )
for( j = i*i ; j <= Ld ; j+=(i<<1) )
ciur[j] = 1 ;
}
}
int lgput(int a, int b)
{
int s;
for( s = 1 ; b ; a = (a*a) % Mod, b>>=1 )
if ( b&1 )
s = ( s * a ) % Mod;
return s;
}
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&T);
precalc();
for( ; T ; --T )
{
scanf("%lld",&n);
NrDiv = 1 ;
Sum = 1 ;
for( d = 1 ; fact[d] <= n && d <= P ; ++d )
{
if( n % fact[d] == 0 )
{
ex = 1 ;
while( n % fact[d] == 0 )
{
ex++;
n /= fact[d];
}
NrDiv *= ex ;
Sum *= ( lgput( fact[d],ex ) - 1 ) ; Sum %= Mod;
Sum *= lgput( fact[d]-1, Mod-2 ) ; Sum %= Mod;
}
}
if( n > 1 )
{
NrDiv<<=1;
Sum *= (n+1) ;
Sum %= Mod ;
}
printf("%lld %lld\n",NrDiv,Sum);
}
return 0;
}