Pagini recente » Cod sursa (job #1784125) | Cod sursa (job #2502882) | Cod sursa (job #914873) | Cod sursa (job #2909513) | Cod sursa (job #2412715)
#include <iostream>
#include <fstream>
#define MAXP 1000005
#define MP 78499
#define MOD 9973
#define ll long long
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
bool prim[MAXP];
int vp[MAXP];
void C(){
int npr=0;
prim[0]=prim[1]=1;
for(int i=2;i<MAXP;i++){
if(prim[i]==0){
npr++;
vp[npr]=i;
for(int d=2;d*i<=MAXP;d++){
prim[i*d]=1;
}
}
}
}
int pw(int x,int p){
int rez=1;
x%=MOD;
for(;p!=0;p>>=1){
if(p&1){
rez*=x;
rez%=MOD;
}
x*=x;
x%=MOD;
}
return rez;
}
void solve(ll n){
ll nrd=1,sd=1;
for(int i=1;1LL*vp[i]*vp[i]<=n;i++){
if(n%vp[i]) continue;
int e=0;
while(n%vp[i]==0){
e++;
n/=vp[i];
}
nrd*=e+1;
int pw1=(pw(vp[i],e+1)-1)%MOD,pw2=pw(vp[i]-1,MOD-2)%MOD;
sd*=(((sd*pw1)%MOD)*pw2)%MOD;
}
if(n>1){
nrd*=2;
sd=(1LL*sd*(n+1)%MOD);
}
fout<<nrd<<' '<<sd<<'\n';
}
int main(){
C();
int t;
fin>>t;
for(int i=1;i<=t;i++){
ll n;
fin>>n;
solve(n);
}
return 0;
}