Pagini recente » Cod sursa (job #2809376) | Cod sursa (job #1950589) | Cod sursa (job #449290) | Cod sursa (job #2975695) | Cod sursa (job #494156)
Cod sursa(job #494156)
#include <cstdio>
const int r = 9973;
const int N = 1<<20;
bool c[N];
int pr[N],np;
void ciur()
{
int i,j;
for(i=2 ; i*i<N ; ++i)
if(!c[i])
for(j=i*i ; j<N ; j+=i)
c[j] = true;
for(i=2 ; i<N ; ++i)
if(!c[i])
pr[++np] = i;
}
int numar(long long n)
{
int i,p,nr = 1;
for(i=1 ; (long long)pr[i]*pr[i] <= n ; ++i)
{
if(n%pr[i] != 0)
continue;
for(p=0 ; n%pr[i] == 0 ; n/=pr[i])
++p;
nr *= (p + 1);
}
if(n != 1)
nr <<= 1;
return nr;
}
int suma(long long n)
{
int i;
long long s = 1,p;
for(i=1 ; (long long)pr[i]*pr[i] <= n ; ++i)
{
if(n%pr[i] != 0)
continue;
for(p=1 ; n%pr[i]==0 ; n/=pr[i])
p *= pr[i];
s *= (long long)(p*pr[i] - 1) / (pr[i] - 1);
s %= r;
}
if(n != 1)
s *= n + 1;
return s%r;
}
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
int t;
ciur();
long long n;
scanf("%d",&t);
while(t--)
{
scanf("%lld",&n);
printf("%d %d\n",numar(n),suma(n));
}
return 0;
}