Pagini recente » Cod sursa (job #2712889) | Cod sursa (job #1347326) | Cod sursa (job #2779057) | Cod sursa (job #1817509) | Cod sursa (job #613395)
Cod sursa(job #613395)
#include <cstdio>
#include <math.h>
using namespace std;
int t,x,a[1000005],ciur[1000005],prod=1,nr,sumadiv=0;
void ciurul()
{
int p=2,i;
while(p*p<=1000000)
{
for(i=p+p;i<=1000000;i+=p)
{
a[i]=-1;
}
for(int j=p+1;j<=1000000;j++)
{
if(a[j]!=-1)
{
p=j;
break;
}
}
}
for(int i=2;i<=1000000;i++)
if(a[i]==0)
ciur[nr++]=i;
}
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d\n",&t);
ciurul();
for(int i=0;i<t;i++)
{
scanf("%d\n",&x);
int sumadiv=1;
for(int i=0;i<nr && ciur[i]*ciur[i]<=x;i++)
{
int nr1=0;
while(x%ciur[i]==0)
{
x/=ciur[i];
nr1++;
}
prod*=(nr1+1);
sumadiv*= (pow(ciur[i],(nr1+1))-1)/(ciur[i]-1);
}
if(x!=1)
{
prod*=2;
sumadiv*=(x+1);
}
printf("%d %d\n",prod,sumadiv);
prod=1;
sumadiv=1;
}
return 0;
}