Pagini recente » Borderou de evaluare (job #2009042) | Cod sursa (job #1172411) | Cod sursa (job #2426701) | Cod sursa (job #2983081) | Cod sursa (job #1261417)
#include <stdio.h>
using namespace std;
char ciur[1200001];
int main ()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
int f, i, n, prim=2, t, p, j;
long long x;
while(prim*prim<=1200000)
{
for(i=2; i<=1200000/prim; i++)
ciur[prim*i]=1;
prim++;
while(ciur[prim]==1)
prim++;
}
int nrdiv;
long long suma;
scanf("%I64d",&n);
for(j=1; j<=n; j++)
{
scanf("%I64d",&x);
nrdiv=1;
suma=1;
for(f=2; f*f<=x; f++)
if(ciur[f]==0)
{
p=0;
t=1;
while(x%f==0)
{
x/=f;
p++;
t*=f;
}
if(p!=0)
nrdiv=nrdiv*(p+1);
if(t!=1)
suma=suma*(f*t-1)/(f-1);
}
if(x!=1)
{
nrdiv=nrdiv*2;
suma=suma*(x*x-1)/(x-1);
}
suma=suma%9973;
printf("%d %I64d\n",nrdiv,suma);
}
return 0;
}