Pagini recente » Cod sursa (job #894116) | Cod sursa (job #2943291) | Cod sursa (job #254026) | Cod sursa (job #3273037) | Cod sursa (job #3038178)
#include <iostream>
#include <fstream>
#define mod 9973
#include <vector>
#define maxi 10000005
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int t;
long long n;
vector<int>prime;
int ciur[maxi];
void fa_ciur()
{
ciur[0] = ciur[1] = 1;
for (int i = 2; i <= 10e6;i++)
{
if (ciur[i] == 0)
{
prime.push_back(i);
for (int j = i + i; j <= 10e6; j+=i)
{
ciur[j] = 1;
}
}
}
}
long long diviz(long long a)
{
long long tot = 1;
long long ind = 0;
while (a > 1)
{
long long op = 0;
while (a % prime[ind] == 0)
{
a /= prime[ind];
op++;
}
if (op > 0)
{
tot = tot * (op + 1);
}
ind++;
}
return tot;
}
long long expo(long long a, long long b)
{
if (b == 0)
{
return 1;
}
else if (b % 2 == 1)
{
long long x = expo(a, b / 2) ;
return a * x * x;
}
long long x = expo(a, b / 2);
return x * x;
}
long long totsum(long long a)
{
long long retur = 1;
long long ind = 0;
while (a > 1)
{
long long op = 0;
while (a % prime[ind] == 0)
{
a /= prime[ind];
op++;
}
if (op > 0)
{
retur = (retur * ((expo(prime[ind],op+1) - 1) / (prime[ind]-1))) % mod;
}
ind++;
}
return retur;
}
int main()
{
f >> t;
fa_ciur();
for (int i = 1; i <= t; i++)
{
f >> n;
long long totdiv = diviz(n);
g << totdiv << ' ';
long long sum = totsum(n);
g << sum << '\n';
}
}