Pagini recente » Cod sursa (job #693518) | Cod sursa (job #2440345) | Cod sursa (job #2281875) | Cod sursa (job #1733491) | Cod sursa (job #2215799)
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("ssnd.in");
ofstream cout("ssnd.out");
bool p[100000000];
long prim[100000], n;
int k = 0, t;
void eratostene(){
for(int i = 2; i<=1000000; ++i){
if(!p[i]){
prim[++k] = i;
for(int j = 2*i; j<=100000000; j+=i){
p[j] = true;
}
}
}
}
int main()
{
eratostene();
cin>>t;
while(t--){
cin>>n;
int b[10000], e[10000], i = 1, j = 0;
for(int i = 1; i<=10000; ++i){
b[i] = e[i] = 0;
}
while(n!=1){
if(n%prim[i]==0){
b[++j] = prim[i];
while(n%prim[i]==0){
e[j]++;
n/=prim[i];
}
}
i++;
}
long nr = 1, sum = 1;
for(int w = 1; w<=j; ++w){
nr*=e[w]+1;
sum*=(pow(b[w],e[w]+1) - 1)/(b[w]-1);
}
cout<<nr<<' '<<sum<<'\n';
}
return 0;
}