Pagini recente » Cod sursa (job #1668412) | Cod sursa (job #2355405) | Arhiva de probleme | Cod sursa (job #691676) | Cod sursa (job #714021)
Cod sursa(job #714021)
#include<stdio.h>
int i,k,j,t,g[60000];
char v[1000010];
long long pt,n,r,S;
int xnr,xexp,nrdiv;
int power(int a,int b)
{
pt=1;
for(j=1;j<=b;j++)
pt*=a;
return pt;
}
int main ()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&t);
{
v[1]='1';
for(j=2;j<=1000010;j++)
if(v[j]=='\0')
for(k=2;k<= 1000010/j;k++)
v[k*j]='1';
}
r=1;
for(i=1;i<=1000010;i++)
{
if(v[i]=='\0')
{g[r]=i; r++;}
}
for(i=1;i<=t;i++)
{
scanf("%lld",&n);
k=1;
r=0;
nrdiv=S=1;
while(n>1)
{
if(n%g[k]==0)
{
r++;
xexp=0;
xnr=g[k];
while(n%g[k]==0)
{
xexp++; n/=g[k]; }
xexp++;
nrdiv*=(xexp);
xnr--;
S*=( ( power(xnr+1,xexp)-1 )/( xnr ) );
k++;
}
else
{
k++;
}
}
printf("%d %lld\n",nrdiv,S%9973);
}
return 0;
}