Pagini recente » Cod sursa (job #240738) | Cod sursa (job #146344) | Cod sursa (job #1142982) | Cod sursa (job #1267824) | Cod sursa (job #713968)
Cod sursa(job #713968)
#include<stdio.h>
int i,k,j,t;
char v[1000010];
long long nrdiv,S,pt,n,r;
struct put
{
int nr,exp;
}x[1000010];
int ciur()
{
v[1]='1';
for(j=2;j<=1000000;j++)
if(v[j]=='\0')
for(k=2;k<= 1000000/j;k++)
v[k*j]='1';
}
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);
ciur ();
for(i=1;i<=t;i++)
{
scanf("%lld",&n);
k=2;
r=0;
while(n>1)
{
if(v[k]=='\0'&&n%k==0)
{
r++;
x[r].exp=0;
x[r].nr=k;
while(n%k==0)
{
x[r].exp++; n/=k; }
k++;
}
else
{
k++;
}
}
nrdiv=S=1;
for(k=1;k<=r;k++)
{
nrdiv=nrdiv*(x[k].exp+1);
S=S*( ( power(x[k].nr,x[k].exp+1)-1 )/( x[k].nr-1 ) );
}
printf("%lld %lld\n",nrdiv,S);
}
return 0;
}