Pagini recente » Cod sursa (job #2317880) | Cod sursa (job #3000306) | Cod sursa (job #3158920) | Cod sursa (job #3211649) | Cod sursa (job #861675)
Cod sursa(job #861675)
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
FILE *f=fopen("ssnd.in","r");
FILE *g=fopen("ssnd.out","w");
const int n=1000000;
int i,a,nr,p,prim[n],cnt=0;
void ciur()
{
int i,j;
for (i=2;i<=n;i++)
prim[i]=1;
for (i=2;i<=n;i++)
if (prim[i])
{
cnt++;
for (j = 2*i;j<=n;j+=i)
prim[j] = 0;
}
}
void desc(int nr)
{
int x,i=0,dv=1,d,sum=1;
int cnr=nr;
for(i=2;i<=n;i++)
if(prim[i])
{
if(i>sqrt(cnr))break;
d=1;
while(nr%i==0){d++;nr/=i;}
dv*=d;
if(d>1)
{
x=i;
x=pow(x,d);
x--;
x/=(i-1);
sum*=x;
}
}
if(nr>1){dv++;sum+=nr;};
fprintf(g,"%d %d\n",dv,sum);
}
int main()
{
ciur();
fscanf(f,"%d",&a);
for(i=1;i<=a;i++)
{
fscanf(f,"%d",&nr);
desc(nr);
}
fclose(g);
return 0;
}