Pagini recente » Cod sursa (job #14803) | Cod sursa (job #913758) | Cod sursa (job #2910473) | Cod sursa (job #385322) | Cod sursa (job #2312383)
#include <fstream>
#define NMAX 1000000
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int t;
long long x, numere_prime[1000005], z;
bool IsPrim[1000005];
void ciur()
{
for (int i = 4; i <= NMAX; i += 2)
IsPrim[i] = true;
IsPrim[0] = true;
IsPrim[1] = true;
for (int i = 3; i * i <= NMAX; i += 2)
for (int j = i * i; j <= NMAX; j += 2 * i)
IsPrim[j] = true;
numere_prime[++z] = 2;
for (int i = 3; i <= NMAX; i += 2)
if (!IsPrim[i])
numere_prime[++z] = i;
}
int main()
{
ciur();
fin >> t;
for (int i = 0; i < t; ++i)
{
long long x, nrdiv = 1, sumdiv = 1;
fin >> x;
for (int i = 1; i <= z && numere_prime[i] * numere_prime[i] <= x; ++i)
{
int p = 0;
while (x % numere_prime[i] == 0)
{
++p;
x = x / numere_prime[i];
}
if (p)
{
nrdiv = nrdiv * (p + 1);
long long numar = 1;
for (int j = 0; j < p + 1; ++j)
{
numar = numar * numere_prime[i];
}
sumdiv = (sumdiv * ((numar - 1) / (numere_prime[i] - 1))) % 9973;
}
}
if (x > 1)
{
nrdiv = nrdiv * 2;
sumdiv = (sumdiv * ((x * x - 1) / (x - 1))) % 9973;
}
fout << nrdiv << " " << sumdiv << "\n";
}
return 0;
}