Pagini recente » Cod sursa (job #2648922) | Cod sursa (job #1147758) | Cod sursa (job #2083474) | Cod sursa (job #3224902) | Cod sursa (job #2930027)
#include <bits/stdc++.h>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
#define int long long
int t,n;
bool sieve[1000005];
vector<int>primes;
void ciur()
{
sieve[0] = sieve[1] = true;
for (int i = 2; i * i <= 1000000; i++)
if (!sieve[i])
for (int j = i * i; j <= 1000000; j += i)
sieve[j] = true;
for (int i = 2; i <= 1000000; i++)
if (!sieve[i])
primes.push_back(i);
}
signed main()
{
ciur();
in >> t;
while (t--)
{
in >> n;
vector<int>f,e;
for (int i = 0; primes[i] * primes[i] <= n; i++)
{
if (n % primes[i] == 0)
{
f.push_back(primes[i]);
int exp = 0;
while (n % primes[i] == 0)
exp++,n /= primes[i];
e.push_back(exp);
}
}
if (n != 1)
{
f.push_back(n);
e.push_back(1);
}
int nrd = 1;
for (int i = 0; i < e.size(); i++)
nrd *= (e[i] + 1);
out << nrd << ' ';
int prod = 1,modulo = 9973;
for (int i = 0; i < f.size(); i++)
{
int act = 1;
for (int j = 0; j <= e[i]; j++)
act *= f[i];
act--;
act /= (f[i] - 1);
act %= modulo;
prod *= act;
prod %= modulo;
}
out << prod << '\n';
}
return 0;
}