Pagini recente » Cod sursa (job #1041764) | Cod sursa (job #2849952) | Cod sursa (job #45964) | Cod sursa (job #220052) | Cod sursa (job #496509)
Cod sursa(job #496509)
#include<cstdio>
const int N = 1<<20;
int p[N] ;
bool a[N] ;
void init()
{
for (int i=2 ; i*i<N ; ++i )
{
if (!a[i])
{
for (int j=i*i ; j<N ; j+=i )
a[j] = true;
}
}
for(int i=2 ; i<N ; ++i)
if(!a[i])
p[++p[0]] = i;
}
void calcul(long long int n)
{
long long int nr = 1, pow;
int s=1 , exp;
for(int i=1 ; (long long)p[i]*p[i]<=n ; ++i)
{
if ( n%p[i]==0 )
{
pow = p[i] ;
exp = 1;
while ( n%p[i]==0 )
{
n/=p[i];
pow*=p[i];
++exp;
}
nr *= exp;
s = (long long)s*(pow-1)/(p[i]-1)%9973;
}
}
if (n!=1)
{
nr *=2;
s = (long long)s*(n+1)%9973;
}
printf("%lld %d\n" , nr , s );
}
int main()
{
freopen ( "ssnd.in" , "r" , stdin ) ;
freopen ( "ssnd.out" , "w" , stdout ) ;
int t;
long long int n;
scanf( "%d" , &t ) ;
init();
for (int i=1 ; i<=t ; ++i )
{
scanf ( "%lld" , &n ) ;
calcul(n);
}
return 0;
}