Pagini recente » Cod sursa (job #389028) | Cod sursa (job #2920667) | Cod sursa (job #1699798) | Cod sursa (job #525877) | Cod sursa (job #2409751)
#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;vp[i]*vp[i]<=auxn and i<=MP-1;i++){
int e=0,pwvp=1;
while(n%vp[i]==0){
e++;
n/=vp[i];auxn=n;
pwvp*=vp[i];
}
pwvp*=vp[i];
nrd*=e+1;
sd*=(pwvp-1)/((double)vp[i]-1);
}
if(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;
}