Pagini recente » Cod sursa (job #1603755) | Cod sursa (job #1592388) | Cod sursa (job #2180519) | Cod sursa (job #1491611) | Cod sursa (job #1612581)
#include <stdio.h>
#include<vector>
#include<math.h>
#define PRIM 1000001
#define SQprim 1001
#define esteprim(i) P[i]==false
#define LL long long
using namespace std;
bool P[PRIM];
LL n,m,i,t,j,x,ok,SQ,SUM,PROD,p;
LL putere (LL x, LL y)
{
if (y==0)
return 1;
return putere(x,y-1)*x;
}
int main()
{
freopen ("ssnd.in","r",stdin);
freopen ("ssnd.out","w",stdout);
scanf ("%lld",&t);
vector <LL> V;
for (i=2;i<SQprim;i++)
if (esteprim(i))
{
V.push_back(i);
for (j=i*2;j<PRIM;j+=i)
P[j]=true;
}
for (i=SQprim;i<PRIM;i++)
if (esteprim(i))
V.push_back(i);
for (;t>0;t--)
{
scanf ("%lld",&x);
ok=0;
SQ=sqrt(x);
PROD=1;
SUM=1;
for (i=0;V[i]<=SQ&&V[i]<=x;i++)
if (x%V[i]==0)
{
ok=1;
p=0;
j=V[i];
while (x%j==0)
{
p++;
x/=j;
}
PROD*=p+1;
SUM*=(putere(j,p+1)-1);
SUM/=j-1;
}
if (ok)
printf ("%lld %lld\n",PROD,SUM);
else
if (x==1)
printf ("1 1\n");
else
printf ("2 %lld\n",x+1);
}
return 0;
}