Pagini recente » Cod sursa (job #2580417) | Cod sursa (job #503991) | Cod sursa (job #1469666) | Cod sursa (job #1140755) | Cod sursa (job #2935958)
#include <bits/stdc++.h>
using namespace std;
#define DIVMAX 1'000'010
#define MOD 9973LL
typedef long long ll;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
vector<ll> primes;
ll mod(ll x) {
return (x + MOD) % MOD;
}
void sieve(ll n) {
vector<bool> is_prime(n + 1, true);
for (ll i = 2; i <= n; ++i)
if (is_prime[i]) {
primes.push_back(i);
for (ll j = 2 * i; j <= n; j += i)
is_prime[j] = false;
}
}
ll pw(ll b, ll e) {
ll ans = 1LL;
while (e) {
if (e & 1LL)
ans = mod(ans * b);
b = mod(b * b);
e >>= 1;
}
return ans;
}
ll inv(ll x) {
return pw(x, MOD - 2);
}
void solve() {
ll n;
fin >> n;
ll nd = 1LL, sum = 1LL;
for (ll p : primes) {
if (p * p > n)
break;
if (n % p == 0) {
ll d = 1;
while (n % p == 0) {
++d;
n /= p;
}
nd = mod(nd * d);
sum = mod(sum * (pw(p, d) - 1));
sum = mod(sum * inv(p - 1));
}
}
if (n != 1LL) {
nd = (nd * 2) % MOD;
sum = mod(sum * (pw(n, 2) - 1));
sum = mod(sum * inv(n - 1));
}
fout << nd << ' ' << sum << '\n';
}
int main() {
ll t;
fin >> t;
sieve(DIVMAX);
while (t--)
solve();
}