Pagini recente » Cod sursa (job #975402) | Cod sursa (job #1841813) | Cod sursa (job #2953581) | Cod sursa (job #1481136) | Cod sursa (job #2547977)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
#define N 1000001
#define MOD 9973
long long unsigned ciur[N], aux[N];
void prime ()
{
long long unsigned i, j, k=0;
for(i=2;i<=N;i++)
{
if(aux[i] == 0)
{
//aux[i] = 1;
ciur[k] = i;
k++;
j = i+i;
while(j < N)
{
aux[j] = 1;
j += i;
}
}
}
}
long long unsigned power (long long unsigned n , long long unsigned p)
{
if(p==0)
return 1;
if (p==1)
return n;
if(p%2==0)
return (power(n, p/2)%MOD*power(n, p/2)%MOD)%MOD;
else
return (power(n, p/2)%MOD)*(power(n, p/2)%MOD)%MOD*n%MOD;
}
void divisors (long long unsigned n)
{
long long unsigned exponents[(int)sqrt(n)+1], bases[(int)sqrt(n)+1], len=0, i, j, k, card = 1, sum = 1, aux=1, aux2;
i=0;
j=0;
while(n != 1)
{
if(n%ciur[i] == 0)
{
exponents[j] = 0;
bases[j] = ciur[i];
while(n%ciur[i] == 0)
{
exponents[j] += 1;
n /= ciur[i];
}
card *= (exponents[j]+1);
sum *= (power(bases[j], exponents[j]+1)-1)/(bases[j]-1);
j++;
}
i++;
}
//for(i=0;i<j;i++)
// cout<<bases[i]<<' '<<exponents[i]<<'\n';
fout<<card<<' '<<sum<<'\n';
}
int main()
{
prime();
long long unsigned t;
fin>>t;
for(unsigned i=0;i<t;i++)
{
long long unsigned n;
fin>>n;
divisors(n);
}
return 0;
}