Pagini recente » Cod sursa (job #2313592) | Cod sursa (job #1000804) | Cod sursa (job #595140) | Cod sursa (job #3256228) | Cod sursa (job #3300652)
#include <fstream>
#include <bitset>
#include <vector>
#include <cmath>
using namespace std;
ifstream cin("ssnd.in");
ofstream cout("ssnd.out");
const int CIURMAX = 1000000;
const int MOD = 9973;
bitset<CIURMAX + 1> prim;
vector<int> prime;
void ciur() {
prim.set();
prim[0] = prim[1] = 0;
prime.push_back(2);
for (int i = 4 ; i <= CIURMAX ; i += 2) {
prim[i] = 0;
}
for (int i = 3 ; i * i <= CIURMAX ; i += 2) {
if (prim[i]) {
prime.push_back(i);
for (int j = i * i ; j <= CIURMAX ; j += i) {
prim[j] = 0;
}
}
}
}
int main() {
ciur();
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
int d = 0, p = 0, nr_div = 1, suma_div = 1;
while (d < prime.size() && prime[d] * prime[d] <= n) {
while (n % prime[d] == 0) {
n /= prime[d];
p++;
}
if (p) {
nr_div *= (p + 1);
suma_div *= (pow(prime[d], p + 1) - 1) / (prime[d] - 1);
}
d++;
}
if (n > 1) {
nr_div *= 2;
suma_div *= (pow(n, 2) - 1) / (n - 1);
}
cout << nr_div << " " << suma_div % MOD << "\n";
}
return 0;
}