Pagini recente » Cod sursa (job #1779967) | Cod sursa (job #1589788) | Cod sursa (job #175974) | Cod sursa (job #2054255) | Cod sursa (job #1552973)
#include <bits/stdc++.h>
using namespace std;
const int MOD = 9973;
const int N = 1000000;
bitset <N+5> ciur;
int len,P[N];
void sieve(){
int i,j;
P[++len] = 2;
for(i = 3;i <= N;i += 2){
if(ciur[i] == 0){
P[++len] = i;
for(j = i;j <= N/i;j += 2){
ciur[i*j] = 1;
}
}
}
}
inline int lgput(int b, int e){
int sol = 1;
while(e){
if(e&1){
sol = (sol%MOD*b%MOD)%MOD;
}
b = (b%MOD*b%MOD)%MOD;
e >>= 1;
}
return sol;
}
int main()
{
int t,test,i,p,c,j,x;
long long nrd,sd;
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
scanf("%d",&t);
sieve();
for(test = 1;test <= t;test++){
scanf("%d",&x);
nrd = 1;
sd = 1;
for(i = 1;i <= len && P[i]*P[i] <= x;i++){
if(x%P[i] == 0){
c = 0;
while(x%P[i] == 0){
x /= P[i];
c++;
}
nrd = nrd*(c+1);
sd = (sd%MOD*(lgput(P[i],c+1)-1)%MOD)%MOD;
sd = (sd%MOD*(lgput(P[i]-1,MOD-2))%MOD)%MOD;
}
}
if(x > 1){
nrd = nrd*2;
sd = (sd%MOD*(x+1)%MOD)%MOD;
}
printf("%lld %lld\n",nrd,sd);
}
return 0;
}