Pagini recente » Cod sursa (job #3264670) | Cod sursa (job #68615) | Cod sursa (job #2429417) | Cod sursa (job #2877265) | Cod sursa (job #527761)
Cod sursa(job #527761)
#include <cstdio>
using namespace std;
const int N=1000005;
bool c[N];
int v[N];
void ciur()
{
int i,j,n;
for(i=2;i*i<N;++i)
if(!c[i])
for(j=i*i;j<N;j+=i)
c[j]=true;
n=0;
for(i=2;i<N;i++)
if(c[i]==false)
v[++n]=i;
}
long long Fast_pow(long long a, long long b,long long m)
{
long long p;
if(b==0)
return 1;
if(b==1)
return a%m;
p=Fast_pow(a%m,b/2,m);
if(b%2==0)
return (p%m * p%m) %m;
if(b%2==1)
return ((p%m * p%m)%m*a%m)%m;
return 0;
}
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
int t,n,i,m,k,p;
int suma,numar;
scanf("%d",&t);
ciur();
m=9973;
for(k=1;k<=t;k++)
{
scanf("%d",&n);
suma=1;
numar=1;
for(i=1;v[i]*v[i]<=n;++i)
if(n%v[i]==0)
{
p=0;
while(n%v[i]==0)
{
++p;
n/=v[i];
}
suma=suma*(Fast_pow(v[i],p+1,m)-1)/(v[i]-1);
numar=numar*(p+1);
}
if(n!=1)
{
suma=suma*(Fast_pow(n,2,m)-1)/(n-1);
numar=numar*2;
}
printf("%d %d\n",numar,suma);
}
return 0;
}