Pagini recente » Cod sursa (job #63611) | Cod sursa (job #1788939) | Cod sursa (job #541815) | Cod sursa (job #3189362) | Cod sursa (job #2412718)
#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];
int npr=0;
void C(){
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;i<=npr && 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;
}