Pagini recente » Cod sursa (job #485599) | Cod sursa (job #2816819) | Cod sursa (job #1158569) | Cod sursa (job #352382) | Cod sursa (job #1552924)
#include <bits/stdc++.h>
using namespace std;
const int MOD = 9973;
bool ciur[1000005];
void sieve(){
int i,j;
for(i = 4;i <= 1000000;i += 2){
ciur[i] = 1;
}
for(i = 3;i <= 1000000;i += 2){
if(ciur[i] == 0){
for(j = 3*i;j <= 1000000;j += i+i){
ciur[j] = 1;
}
}
}
}
int lgput(int b, int e){
int sol = 1;
while(e){
if(e&1){
sol = (1LL*sol*b)%MOD;
}
b = (1LL*b*b)%MOD;
e >>= 1;
}
return sol;
}
int main()
{
int t,test,nrd,sd,i,p,c,j,x;
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
scanf("%d",&t);
sieve();
for(test = 1;test <= t;test++){
scanf("%d",&x);
if(ciur[x] == 0){
printf("2 %d\n",x+1);
return 0;
}
nrd = 1;
sd = 1;
if(x%2 == 0){
i = 2;
p = 2;
c = 0;
while(x%2 == 0){
x /= 2;
p = (1LL*p*2)%MOD;
c++;
}
nrd = nrd*(c+1);
sd = (1LL*sd*(p-1)*lgput(i-1, MOD-2))%MOD;
}
for(i = 3;i*i <= x;i += 2){
if(x%i == 0){
j = i;
p = i;
c = 0;
while(x%i == 0){
x /= i;
p = (1LL*p*i)%MOD;
c++;
}
nrd = nrd*(c+1);
sd = (1LL*sd*(p-1)*lgput(j-1, MOD-2))%MOD;
}
}
if(x > 1){
nrd *= 2;
sd = (1LL*sd*(x+1))%MOD;
}
printf("%d %d\n",nrd,sd);
}
return 0;
}