Pagini recente » Cod sursa (job #2890680) | Cod sursa (job #86671) | Cod sursa (job #2099296) | Cod sursa (job #3176947) | Cod sursa (job #658992)
Cod sursa(job #658992)
# include <stdio.h>
#include<math.h>
int p[1000005],i,j,k,x,suma,prod,n,t,nr,y,z,q,nr1,s;
bool viz[1000005],ok;
long long int a,b,aux;
int pow1(long long int a, long long int b)
{
long long int aux;
if (b==0) return 1;
else
if (b%2==0)
{
aux=pow1(a,b/2);
return (aux*aux)%9973;
}
else
return (a*pow1(a,b-1))%9973;
}
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d\n",&n);
k=0;
p[++k]=2;
for (i=3; i<=1000005; i+=2)
if (viz[i]==false)
{
p[++k]=i;
for (j=3*i; j<=1000005; j+=2*i)
viz[j]=true;
}
for (t=1; t<=n; t++)
{
scanf("%d\n",&x);
ok=false;
i=1; suma=1; prod=1; s=x;
while (p[i]<=sqrt(x))
{
if (x%p[i]==0)
{
ok=true;
nr=1;
while (x%p[i]==0)
{
nr++;
x/=p[i];
}
prod=(prod*nr)%9973;
z=p[i]; q=nr;
y=pow1(z,q);
suma=(suma*((y-1)/(p[i]-1)))%9973;
}
i++;
}
if (x!=1)
{prod=(prod*2)%9973;
suma=(suma*((x*x-1)/(x-1)))%9973;}
printf("%d %d\n",prod,suma);
}
return 0;
}