Pagini recente » Cod sursa (job #2573277) | Cod sursa (job #905520) | Cod sursa (job #875107) | Cod sursa (job #986156) | Cod sursa (job #2654810)
#include <bits/stdc++.h>
#define LMAX 1000005
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int t;
long long n, nr_div, sum;
const int MOD = 9973;
bool v[LMAX];
vector <int> prime;
long long putere(long long a, long long b) {
long long rez = a;
while (--b)
rez *= a;
return rez;
}
void descompune(){
nr_div = 1, sum = 1;
long long p = 0, div = 0;
for (long long i = 0; n > 1 && i * i <= n; ++i) {
p = 0, div = prime[i];
while (n % div == 0) {
n /= div;
++p;
}
if (p > 0) {
nr_div = nr_div * (p + 1) % MOD;
sum = sum * ((putere(div, p + 1) - 1) / (div - 1)) % MOD;
}
if (n <= 1)
break;
}
if (n > 1) {
p = 1, div = n;
nr_div = nr_div * (p + 1) % MOD;
sum = sum * ((putere(div, p + 1) - 1) / (div - 1)) % MOD;
}
fout << nr_div << " " << sum << "\n";
return;
}
void ciur() {
for (int i = 2; i <= LMAX - 2; i += 2) {
if (!v[i]) {
for (int j = i * 2; j <= LMAX - 2; j += i)
v[j] = 1;
prime.push_back(i);
}
if (i == 2)
--i;
}
return;
}
int main() {
ciur();
fin >> t;
while (t--) {
fin >> n;
descompune();
}
return 0;
}