Pagini recente » Cod sursa (job #738548) | Cod sursa (job #2301730) | Cod sursa (job #1570135) | Cod sursa (job #1176703) | Cod sursa (job #516636)
Cod sursa(job #516636)
#include<stdio.h>
#include<math.h>
int main()
{int test;
long n,t,nr,s,j,i,k,d[20000],p[20000],v[20000],l;
char a[20000];
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d\n",&test);
for(l=1;l<=test;l++)
{scanf("%ld\n",&n);
for(i=1;i<=sqrt(n);i++)
{a[i]='0';
d[i]=0;}
j=2;
k=0;
for(i=2;i<=sqrt(n);i++)
if(a[i]=='0'&&i*i>sqrt(n)&&n%i==0)
v[++k]=i;
while(j*j<=sqrt(n))
{if(a[j]=='0')
{v[++k]=j;
for(t=2;t*j<=sqrt(n);t++)
if(a[t*j]=='0')
a[t*j]='1';}
j++;}
while(a[j]=='1')
j++;
v[++k]=j;
i=1;
j=1;
t=n;
while(i<=k&&t!=0)
{if(t%v[i]==0)
{p[j]=v[i];
d[j]++;
t=t/v[i];}
else
{i++;
if(d[j]!=0)
j++;}}
s=1;
nr=1;
for(i=1;i<j;i++)
{nr=nr*(d[i]+1);
s=s*((long)(pow(p[i],d[i]+1))-1)/(p[i]-1);}
if(s==1)
{nr=2;
s+=n;}
printf("%ld %ld\n",nr,s);}
fclose(stdin);
fclose(stdout);
return 0;}