Pagini recente » Cod sursa (job #2298619) | Cod sursa (job #2310913) | Cod sursa (job #182575) | Cod sursa (job #2278503) | Cod sursa (job #1766618)
#include <cstdio>
const long long NMAX = 1000010;
const int MODULO = 9973;
int T;
long long N;
long long NRD, SUMD;
char ciur[NMAX];
void functieCiur () {
ciur[0] = ciur[1] = 1;
long long p = 2;
while (p * p <= NMAX) {
for (long long i = p * p; i <= NMAX; i += p) {
ciur[i] = 1;
}
while (ciur[++p] == 1);
}
}
long long lgput (long long x, int putere = MODULO - 2) {
if (putere == 1) {
return x % MODULO;
}
if (putere % 2 == 0) {
return lgput ((x * x) % MODULO, putere / 2);
}
else {
return ((x % MODULO) * lgput (x, putere - 1)) % MODULO;
}
}
int main () {
freopen ("ssnd.in", "r", stdin);
freopen ("ssnd.out", "w", stdout);
functieCiur ();
scanf ("%d", &T);
while (T--) {
scanf ("%lld", &N);
NRD = SUMD = 1;
for (long long f = 2; ciur[f] * ciur[f] <= N;) {
//long long flap = 1;
long long p = 0;
while (N % f == 0) {
N /= f;
//flap = (flap * f) % MODULO;
p++;
}
if (p >= 1) {
NRD *= (p + 1);
SUMD = (SUMD * ((( lgput (f, p + 1) - 1) * lgput (f - 1)) % MODULO)) % MODULO;
}
while (ciur[++f] == 1);
}
if (N != 1) {
NRD *= 2;
SUMD = (SUMD * (N + 1)) % MODULO;
}
printf ("%lld %lld\n", NRD, SUMD);
}
return 0;
}