Pagini recente » Cod sursa (job #1038602) | Cod sursa (job #2150296) | Cod sursa (job #685282) | Cod sursa (job #2615663) | Cod sursa (job #2484104)
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int nmax=1000000;
bool p[1000001];
int prime [100001],nrp;
void ciur()
{
int i,j;
memset(p,1, sizeof p);
p[0]=0;
p[1]=0;
for(i=2;i<=nmax;i++)
{
if(p[i]==1)
{
nrp++;
prime[nrp]=i;
for(j=2;j<=nmax/i;j++)
p[i*j]=0;
}
}
}
void rezolva(long long nr)
{
long long d,p,i,nrdiv=1,sumdiv=1,dp=1;
i=1;
d=prime[1];
while((d*d<=nr) && (i<=nrp))
{
p=0;
dp=1;
while(nr%d==0)
{
p++;
nr=nr/d;
dp=dp*d;
}
nrdiv=nrdiv*(p+1);
sumdiv=sumdiv*(dp*d-1)/(d-1);
i++;
d=prime[i];
}
if(nr>1)
{
nrdiv=nrdiv*2;
sumdiv=sumdiv*(1+nr);
}
fout<<nrdiv<<' '<<sumdiv<<'\n';
}
int main()
{
int t,i;
long long nr;
ciur();
fin>>t;
for(i=1;i<=t;i++)
{
fin>>nr;
rezolva(nr);
}
}