Pagini recente » Cod sursa (job #3134014) | Cod sursa (job #1995734) | Cod sursa (job #655950) | Cod sursa (job #1201046) | Cod sursa (job #496278)
Cod sursa(job #496278)
#include<fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int n;
const int N=1<<20;
bool ciur[N];
int prim[N>>3];
void ciurul()
{
int i,j;
for(i=2; i*i<=N; ++i)
if (ciur[i]==0)
for(j=i*i; j<=N; j+=i)
ciur[j]=1;
}
void rezolva(int x)
{
int pt,pr=1,i,nd=1;
for(i=1;prim[i]*prim[i]<=x; ++i)
if (x%prim[i]==0)
{
pt=0;
pr=prim[i];
while (x%prim[i]==0)
{
x=x/prim[i];
pr=pr*prim[i];
++pt;
}
nd=nd*(pt+1);;
pr=pr-1;
pr=pr/(prim[i]-1);
}
if (x>1)
{
nd=nd*2;
pr=pr*(x+1);
}
g<<nd<<" "<<pr<<"\n";
}
int main()
{
int i,nrp=0,a;
f>>n;
ciurul();
for(i=2;i<N;++i)
if (ciur[i]==0) prim[++nrp]=i;
for(i=1; i<=n; ++i)
{
f>>a;
rezolva(a);
}
return 0;
}