Pagini recente » Cod sursa (job #3179260) | Cod sursa (job #974542) | Cod sursa (job #3158922) | Cod sursa (job #2333315) | Cod sursa (job #1328273)
#include <cstdio>
#define MOD 9973
#define NMAX 1000005
using namespace std;
unsigned long long N,x;
int T, K, P[NMAX];
char prim[NMAX];
void macel (){
int i,j;
prim[1]=0,prim[2]=1;
P[0]=2;
for (i=3;i<=NMAX;i+=2)
prim[i]=1;
for (i=3;i<=NMAX;i+=2){
if (prim[i]){
P[++K]=i;
for (j=i+i+i;j<=NMAX;j+=i<<1){
prim[j]=0;}
}
}
}
long long ridicare(long long baza, long long exp)
{
long long res=1;
while (exp>0)
{
if (exp%2) res=(res*baza) % MOD;
baza=(baza*baza) % MOD; exp/=2;
}
return res % MOD;
}
void sol( long long N){
int nd = 1, sd = 1;
long long i;
for (i=0;i<=K&&1LL*P[i]*P[i]<=N;i++){
if (N%P[i])
continue;
int p=0;
while (N%P[i]==0){
N/=P[i];
p++;}
nd*=p+1;
int p1 = (ridicare(P[i], p+1) - 1) % MOD;
int p2 = ridicare(P[i]-1, MOD-2) % MOD;
sd = (((sd * p1) % MOD) * p2) % MOD;}
if (N>1&&1LL*P[i]*P[i]>N){
nd*=2;
sd = (1LL*sd*(N+1) % MOD);}
printf ("%d %d", nd, sd);
printf ("%c", '\n');}
int main()
{int i;
freopen ("ssnd.in", "r", stdin);
freopen ("ssnd.out", "w", stdout);
scanf ("%d", &N);
macel();
for (i=1;i<=N;i++){
scanf ("%lld", &x);
sol(x);}
return 0;
}