Pagini recente » Cod sursa (job #2513865) | Cod sursa (job #2903610) | Cod sursa (job #2390603) | Cod sursa (job #1358834) | Cod sursa (job #875722)
Cod sursa(job #875722)
#include <cstdio>
using namespace std;
int main()
{ int n,h,nr,k,d,exp[1001],i;
long long x,sd,p[1001];
freopen("ssnd.in","r",stdin); freopen("ssnd.out","w",stdout);
scanf("%d\n",&n);
for(;n>=1;--n)
{
scanf("%I64d\n",&x);
k=0;
if(x%2==0){ d=0; while(x%2==0){ ++d; x/=2; } ++k; p[k]=2; exp[k]=d; }
i=3;
while(x!=1&&i*i<=x)
{
if(x%i==0){ d=0; while(x%i==0){ ++d; x/=i; } ++k; p[k]=i; exp[k]=d; }
i+=2;
}
if(x!=1){ ++k; p[k]=x; exp[k]=1; }
sd=1; nr=1;
for(i=1;i<=k;++i)
{
nr=nr*(exp[i]+1); x=1;
for(h=1;h<=exp[i]+1;++h)
x=x*p[i];
x=(x-1)/(p[i]-1); sd*=x;
}
printf("%d %I64d\n",nr,sd);
}
fclose(stdin);
fclose(stdout);
return 0;
}