Pagini recente » Cod sursa (job #1115533) | Cod sursa (job #2812716) | Cod sursa (job #1409512) | Cod sursa (job #3190074) | Cod sursa (job #865603)
Cod sursa(job #865603)
#include <stdio.h>
#include<math.h>
FILE *in,*out;
using namespace std;
int t,exponent;
long long nr,n,u,i,j,k;
long long v[5000002];unsigned long long prod;
bool c[1000002];
int main()
{
in=fopen("ssnd.in","rt");
out=fopen("ssnd.out", "wt");
fscanf(in, "%d", &t);
for(i=2;i<=1000001; 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;
for(k=1;n>1;k++)
{ exponent=0;
while(n%v[k]==0)
{
n/=v[k];
exponent++;
}
//calc nr de divizori
if(exponent)
{
exponent++;
nr*=(exponent);
//calc suma diviz
prod*=(pow(v[k], exponent)-1)/(v[k]-1);
}
}
fprintf(out, "%.lld %.lld\n", nr, prod%9973);
}
fclose(in);
fclose(out);
return 0;
}