Pagini recente » Cod sursa (job #1288267) | Cod sursa (job #1976450) | Cod sursa (job #3140229) | Cod sursa (job #2293470) | Cod sursa (job #494852)
Cod sursa(job #494852)
#include <cstdio>
const int N = 1000000;
int nr,ok,j,m,exp,n,i,t;
int p[N];
bool marcat[N];
long long pow,s;
void ciur()
{
for (i=2;i*i<N;i++)
if (!marcat[i])
for (j=i*i;j<N;j=j+i)
marcat[j]=true;
for (i=2;i<N;i++)
if (!marcat[i])
{
m=m+1;
p[m]=i;
}
}
int main ()
{
freopen ("ssnd.in","r",stdin);
freopen ("ssnd.out","w",stdout);
nr=1;
s=1;
ciur();
scanf("%d",&t);
for (j=1;j<=t;j++)
{
scanf("%d",&n);
nr=1;
s=1;
for (i=1;p[i]*p[i]<=n;++i)
if (n%p[i]==0)
{
exp=1;
pow=p[i];
while (n%p[i]==0)
{
exp++;
pow=pow*p[i];
n=n/p[i];
}
nr=nr*exp;
s=s*(pow-1)/(p[i]-1);
s=s%9973;
}
if (n!=1)
{
nr=nr*2;
s=s*(n+1);
}
printf("%d %lld\n",nr,s%9973);
}
return 0;
}