Pagini recente » Cod sursa (job #895410) | Cod sursa (job #649206) | Cod sursa (job #2335760) | Cod sursa (job #3209220) | Cod sursa (job #496501)
Cod sursa(job #496501)
#include<cstdio>
const int N = 1<<20;
int p[N] ;
bool a[N] ;
void init()
{
for (int i=2 ; i<1000001 ; ++i )
{
if (!a[i])
{
p[++p[0]] = i;
for (int j=i+i ; j<1000001 ; j+=i )
a[i] = true;
}
}
}
void calcul(long long int n)
{
long long int s=1 , nr = 1 , pow , 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 *= (pow-1)/(p[i]-1);
}
}
if (n!=1)
{
nr *=2;
s *= n+1;
}
printf("%lld %lld\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;
}