Pagini recente » Cod sursa (job #2693660) | Cod sursa (job #833555) | Cod sursa (job #652358) | Cod sursa (job #1635579) | Cod sursa (job #496285)
Cod sursa(job #496285)
#include<cstdio>
const long long N=1<<20;
bool ciur[N];
long long prim[N>>3];
long long p[1<<5],d[1<<5];
long long n,nr,t;
void descompunere(long long x)
{
p[0]=0;
d[0]=0;
for (long long i=1;prim[i]*prim[i]<=x;i++)
{
if (x%prim[i]==0)
{
p[++p[0]]=prim[i];
++d[0];
d[d[0]]=0;
while (x%prim[i]==0)
{
x/=prim[i];
d[d[0]]++;
}
}
}
if (x>1) p[++p[0]]=x;
if (x>1) d[++d[0]]=1;
}
long long numar()
{
long long s=1;
for (long long i=1;i<=d[0];i++)
s*=d[i]+1;
return s;
}
long long suma()
{
long long pr=1;
for (long long i=1;i<=p[0];i++)
{
long long s=1;
for ( long long j=1;j<=d[i]+1;j++)
s*=p[i];
s-=1;
s/=p[i]-1;
pr*=(s%9973);
pr%=9973;
}
return pr;
}
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%lld", &t);
for (long long i=2;i*i<N;i++)
{
if (ciur[i]==0)
for (long long j=i*i;j<N;j+=i)
ciur[j]=1;
}
for (long long i=2;i<N;i++)
if ( ciur[i] == 0 ) prim[++nr]=i;
for (long long i=1;i<=t;i++)
{
scanf("%lld", &n);
descompunere(n);
printf("%lld %lld\n", numar() , suma() );
}
return 0;
}