Pagini recente » Cod sursa (job #1532463) | Cod sursa (job #2235020) | Cod sursa (job #2859607) | Cod sursa (job #1467857) | Cod sursa (job #527486)
Cod sursa(job #527486)
#include<stdio.h>
#include<math.h>
#define max 1000000
struct fact
{
int x,y;
};
int nr,m,i,j,ok[max],q,t,a[80000];
long long p,pp,n;
fact b[80000];
void ciur()
{
for (i=3;i<=sqrt(max);i+=2)
if (!ok[i])
for (j=i*i;j<=max;j+=i)
ok[j]=1;
m=1;
a[1]=2;
for (i=3;i<=max;i+=2)
if (!ok[i])
a[++m]=i;
}
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);
nr=0;
for (j=1;j<=sqrt(n);j++)
if (n%a[j]==0)
{
q=0;
while (n%a[j]==0)
{
n/=a[j];
q++;
}
nr++;
b[nr].x=a[j];
b[nr].y=q;
}
if (n!=1)
{
nr++;
b[nr].x=n;
b[nr].y=1;
}
p=1;
for (j=1;j<=nr;j++)
p*=(b[j].y+1);
printf("%lld ",p);
p=1;
for (j=1;j<=nr;j++)
{
pp=1;
for (q=1;q<=b[j].y+1;q++)
pp*=b[j].x;
p=(p*((pp-1)/(b[j].x-1)))%9973;
}
printf("%lld\n",p);
}
return 0;
}