Pagini recente » Cod sursa (job #2696203) | Cod sursa (job #1084532) | Cod sursa (job #847908) | Cod sursa (job #1619013) | Cod sursa (job #2409775)
#include <iostream>
#include <fstream>
#define MAXP 1000001
#define MP 78499
#define ll long long
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
bool prim[MAXP];
int vp[MP];
void C(){
int npr=0;
prim[0]=prim[1]=1;
for(int i=2;i<=MAXP and npr<=MP-1;i++){
if(prim[i]==0){
npr++;
vp[npr]=i;
for(int d=2;d*i<=MAXP;d++){
prim[i*d]=1;
}
}
}
}
void solve(ll n){
ll nrd=1,sd=1,auxn=n;
for(int i=1;i<=MP and n>1;i++){
int e=0,pwvp=1;
while(n%vp[i]==0){
e++;
n/=vp[i];
pwvp*=vp[i];
}
pwvp*=vp[i];
nrd*=e+1;
sd*=(pwvp-1)/(vp[i]-1);
}
if(n==1){
fout<<nrd<<' '<<sd<<'\n';
}
else if(auxn!=n){
nrd*=2;
sd*=(n*n-1)/(n-1);;
fout<<nrd<<' '<<sd<<'\n';
}
else{
fout<<2<<' '<<n+1<<'\n';
}
}
int main(){
C();
int t;
fin>>t;
for(int i=1;i<=t;i++){
ll n;
fin>>n;
solve(n);
}
return 0;
}