Pagini recente » Cod sursa (job #3145471) | Cod sursa (job #380159) | Cod sursa (job #498896) | Cod sursa (job #2369492) | Cod sursa (job #1827229)
#include <fstream>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
//#define Nmax 1000001
int t;
//char v[Nmax]
long long n;
/*void ciur(char *v)
{
long i,j;
v[0]=v[1]=1;
for(i=2;i*i<=Nmax;i++)
if(v[i]==0)
for(j=i;j*i<=Nmax;j++)
v[i*j]=1;
}*/
int nrd(long long x)
{
long d=2,nr=1;
while(d*d<=x)
{
if(x%d==0)
{
int e=0;
while(x%d==0)
e++,x/=d;
nr=nr*(e+1);
}
d++;
}
if(x>1) nr*=2;
return nr;
}
long long put(long d, int e)
{
long long x=1;
int i;
for(i=1; i<=e+1; i++)
x=x*d;
return x;
}
long long sd(long long x)
{
long long s=1;
long d=2;
while(d*d<=x)
{
if(x%d==0)
{
int e=0;
while(x%d==0)
e++,x/=d;
long long a=put(d,e);
s=s*((a-1)/(d-1));
}
d++;
}
if(x>1) s=s*((x*x-1)/(x-1));
return s;
}
int main()
{
fin>>t;
while(t)
{
fin>>n;
fout<<nrd(n)<<' '<<sd(n)<<endl;
t--;
}
return 0;
}