Pagini recente » Cod sursa (job #471327) | Cod sursa (job #1020044) | Cod sursa (job #3305300) | Cod sursa (job #2451333) | Cod sursa (job #495139)
Cod sursa(job #495139)
#include <fstream>
#include <vector>
using namespace std;
const char InFile[]="ssnd.in";
const char OutFile[]="ssnd.out";
const int MaxN=1000100;
ifstream fin(InFile);
ofstream fout(OutFile);
int nrd,t;
long long n,sum;
char pciur[MaxN];
vector<int> nrp;
inline void ciur()
{
for(register int i=2;i<MaxN;++i)
{
if(pciur[i]==0)
{
nrp.push_back(i);
for(register int j=i<<1;j<=MaxN;j+=i)
{
pciur[j]=1;
}
}
}
}
int main()
{
ciur();
fin>>t;
for(register int i=0;i<t;++i)
{
fin>>n;
nrd=1;
sum=1;
for(register int j=0;j<(int)nrp.size();++j)
{
int p=1;
int k=nrp[j];
while(n%nrp[j]==0)
{
++p;
k*=nrp[j];
n/=nrp[j];
}
nrd*=p;
sum*=(k-1)/(nrp[j]-1);
if(n==1)
{
break;
}
}
if(n>1)
{
nrd<<=1;
sum*=(nrd*nrd-1)/(nrd-1);
}
fout<<nrd<<" "<<sum<<"\n";
}
fout.close();
fin.close();
return 0;
}