Pagini recente » Cod sursa (job #556856) | Cod sursa (job #1737833) | Cod sursa (job #1556148) | Cod sursa (job #3130673) | Cod sursa (job #2633948)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout("ssnd.out");
int nrp,prim[1000002];
bool ap[1000002];
void ciur (int n)
{
int i,j;
prim[++nrp]=2;
for (i=3;i*i<=n;i+=2)
if (ap[i]==0)
{
prim[++nrp]=i;
for (j=i*i;j<=n;j+=i)
ap[j]=1;
}
for (;i<=n;i+=2)
if (ap[i]==0)
prim[++nrp]=i;
}
void rez (long long x)
{
int i;
long long nd=1,sd=1;
for (i=1;i<=nrp && prim[i]*prim[i]<=x;++i)
{
int exp=0;
while (x%prim[i]==0)
++exp,x/=prim[i];
nd=nd*(exp+1);
sd=sd*(pow(prim[i],exp+1)-1)/(prim[i]-1);
}
if (x>1)
{
nd*=2;
sd=sd*(x*x-1)/(x-1);
}
fout<<nd<<' ' <<sd%9973<<'\n';
}
int main()
{
int t;
long long x;
fin>>t;
ciur(1000000);
for (;t>0;--t)
{
fin>>x;
rez(x);
}
return 0;
}