Pagini recente » Cod sursa (job #2979380) | Cod sursa (job #3243128) | Cod sursa (job #3300428) | Concursul Prosoft @ Piatra Neamt 2016 clasa a 10-a | Cod sursa (job #865574)
Cod sursa(job #865574)
#include <stdio.h>
#include<math.h>
FILE *in,*out;
using namespace std;
int t,exponent;
long long prod,nr,n,u,i,j,poz;
long long v[500000];
bool c[1000001];
int main()
{
in=fopen("ssnd.in","rt");
out=fopen("ssnd.out", "wt");
fscanf(in, "%d", &t);
for(i=2;i<=1000000; i++)
if (!c[i])
{ v[++u]=i;
for (j=i+i; j<=1000000; j+=i)
c[j]=1;
}
for (i=1 ; i<=t ; i++)
{
fscanf(in, "%lld", &n);
nr=1;
prod=1;poz=1;
while (n>1)
{
exponent=0;
while (n%v[poz]==0)
{
n/=v[poz];
exponent++;
}
//calc nr de divizori
if(exponent)
{
exponent++;
nr*=(exponent);
//calc suma diviz
prod*=(pow(v[poz], exponent)-1)/(v[poz]-1);
}
poz++;
}
fprintf(out, "%.lld %.lld\n", nr, prod);
}
fclose(in);
fclose(out);
return 0;
}