Pagini recente » Cod sursa (job #3270266) | Cod sursa (job #1527457) | Cod sursa (job #2728859) | Cod sursa (job #3187491) | Cod sursa (job #517584)
Cod sursa(job #517584)
#include<stdio.h>
#include<math.h>
#define N 1000000
int test,l;
long n,t,nr,s,j,i,d[N],p[N],u;
char a[N];
long put(long x,long n)
{if(n==0)
return 1;
if(n%2==0)
return put(x,n/2)*put(x,n/2);
else
return x*put(x,(n-1)/2)*put(x,(n-1)/2);}
int main()
{freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d\n",&test);
for(u=1;u<=test;u++)
{scanf("%ld\n",&n);
for(i=1;i<=sqrt(n);i++)
{a[i]='0';
d[i]=0;}
j=2;
i=1;
t=n;
while(j<=sqrt(n))
{if(a[j]=='0')
{while(t!=1)
{if(t%j==0)
{d[i]++;
t/=j;
if(t==1)
{p[i]=j;
i++;}}
else
{if(d[i]!=0)
{p[i]=j;
i++;}
break;}}
for(l=2;sqrt(l*j)<=sqrt(n);l++)
if(a[l*j]=='0')
a[l*j]='1';}
j++;}
if(t!=1)
{d[i]=1;
p[i]=t;
i++;}
s=1;
nr=1;
for(j=1;j<i;j++)
{nr=nr*(d[j]+1);
s=s*(put(p[j],d[j]+1)-1)/(p[j]-1);}
if(s==1)
{nr=2;
s+=n;}
printf("%ld %ld\n",nr,s%9973);}
fclose(stdin);
fclose(stdout);
return 0;}