Pagini recente » Cod sursa (job #739679) | Cod sursa (job #1339861) | Cod sursa (job #2731917) | Cod sursa (job #114293) | Cod sursa (job #639461)
Cod sursa(job #639461)
#include<stdio.h>
#include<math.h>
using namespace std;
int main()
{
int a[50000],i,j,b[50000],d[1001],n,a1[50000],max,u,k;
int s,nr,in;
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&n);
scanf("%d",&d[1]);
max=d[1];
for(i=2;i<=n;i++)
{
scanf("%d",&d[i]);
if(d[i]>max)
max=d[i];
}
a[1]=2;
u=1;
b[2]=2;
max=sqrt(max);
for(i=2;i<=max;i++)
b[i]=i*2-1;
for(i=2;i<=max;i++)
if(b[i]!=0)
{
a[++u]=b[i];
for(j=i+b[i];j<=max;j+=b[i])
{
b[j]=0;
}
}
for(i=1;i<=n;i++)
{
s=1;
nr=1;
for(j=1;j<=sqrt(d[i]);j++)
{
if(d[i]%a[j]==0)
{
in=0;
k=d[i];
do
{
k/=a[j];
in++;
}
while(k%a[j]==0);
s=s*((pow(a[j],in+1)-1)/(a[j]-1));
nr*=(in+1);
}
}
if(s==1&&nr==1)
{
nr=2;
s=(d[i]*d[i]-1)/(d[i]-1);
}
printf("%d ",nr);
printf("%d\n",s);
}
return 0;}