Pagini recente » Cod sursa (job #2632940) | Cod sursa (job #1584840) | Cod sursa (job #2477024) | Cod sursa (job #2495175) | Cod sursa (job #2197966)
#include <bits/stdc++.h>
#define maxim 1000000
#define mod 9973
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
int v[1000005];
int prim (int n)
{
for (int i = 2; i * i <= n; i++) {
if (n%i == 0) return 0;
}
return 1;
}
void ciur ()
{
int k = 0;
for (int i = 2; i <= maxim; i++) {
if (prim(i) == 1) k++, v[k] = i;
}
}
int cautare (int n, int& numar_divizori)
{
long long total = 1;
int k = n;
for (int i = 1; v[i] * v[i] <= k && n > 1; i++) {
long long nr = 0;
while (n%v[i] == 0) {
nr++, n /= v[i], total += (nr * v[i]), total %= mod;
}
numar_divizori *= (nr + 1);
}
if (n != 1) numar_divizori *= 2, total += n;
return total % mod;
}
int main()
{
ciur();
int t;
fin >> t;
for (int j = 1; j <= t; j++) {
int n;
fin >> n;
int numar_divizori = 1;
int total = cautare(n,numar_divizori);
fout << numar_divizori << " " << total << "\n";
}
fin.close();
fout.close();
return 0;
}