Pagini recente » Cod sursa (job #2417345) | Cod sursa (job #1887250) | Cod sursa (job #486190) | Cod sursa (job #2899863) | Cod sursa (job #1121363)
#include <cstdio>
using namespace std;
long long i,np,p[1000002],t;
long long P[100000],n,sd,nd,term,sum,cnt,prim;
void ciur();
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
ciur();
scanf("%lld",&t);
for(;t;t--)
{
sd=1;nd=1;
scanf("%lld",&n);
if(n==1){printf("1 1\n");continue;}
for(i=1;i<=np&&P[i]*P[i]<=n;i++)
if(n%P[i]==0)
{
sum=1;cnt=1;term=1;
prim=P[i]%9973;
while(n%P[i]==0)
{
cnt++;
term=(term*prim)%9937;
sum=(sum+term)%9937;
n/=P[i];
}
sd=(sd*sum)%9973;
nd*=cnt;
}
if(n>1){sd=(sd*(1+n))%9973;nd*=2;}
printf("%lld %lld\n",nd,sd);
}
return 0;
}
void ciur()
{
P[1]=2;np=1;
for(i=3;i<=1000;i+=2)
if(!p[i])
{
P[++np]=i;
for(int j=i*i;j<=1000000;j+=2*i)p[j]=1;
}
for(;i<=1000000;i+=2)
if(!p[i])
P[++np]=i;
}