Pagini recente » Cod sursa (job #589821) | Cod sursa (job #1536344) | Cod sursa (job #2547703) | Cod sursa (job #3164578) | Cod sursa (job #621301)
Cod sursa(job #621301)
#include <cstdio>
using namespace std;
bool v[1000001];
long long p[1000001],nr,s;
void ciur()
{
long long i,j;
for(i=2;i<=1000000;++i)
{
if(v[i]==true)
continue;
p[++p[0]]=i;
for(j=i;j*i<=1000000;++j)
{
v[i*j]=true;
}
}
}
void descompune(long long x)
{
long long i,put;
nr=1;
s=1;
for(i=1;p[i]*p[i]<=x;++i)
{
long long a;
if(x%p[i]==0)
{
a=p[i]*p[i];
put=1;
x/=p[i];
while(x%p[i]==0)
{
x/=p[i];
put++;
a*=p[i];
}
nr*=put+1;
s=(s*(a-1)/(p[i]-1))%9973;
}
}
if(x!=1)
{
nr*=2;
s=(s*(x*x-1)/(x-1))%9973;
}
}
int main()
{
long long n,x,i;
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%I64d",&n);
ciur();
//for(i=1;i<=p[0];++i)
// prlong longf("%d ",p[i]);
for(i=1;i<=n;++i)
{
scanf("%I64d",&x);
descompune(x);
printf("%I64d %I64d\n",nr,s);
}
return 0;
}