Pagini recente » Cod sursa (job #1197489) | Cod sursa (job #2744669) | Cod sursa (job #2916467) | Cod sursa (job #516510) | Cod sursa (job #1139669)
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
typedef long long ll;
const int MOD = 9973;
const int Nmax = 1000000;
const int Rng = 1000000;
char isPrime[Nmax];
int T, prime[Rng];
ll N;
int main()
{
ifstream f ("ssnd.in");
ofstream g ("ssnd.out");
// generarea numerelor prime
memset(isPrime, 1, sizeof(isPrime));
isPrime[0] = isPrime[1] = 0;
prime[0] = 1;
int p = 1;
for (int i = 2; i < Nmax; i++) {
if (isPrime[i]) {
prime[p++] = i;
for (ll j = 1ll*i*i; j < Nmax; j += i)
isPrime[j] = 0;
}
}
//int primelimit = p;
// program
f >> T;
for (int t = 0; t < T; t++) {
f >> N;
ll numdiv = 1,
sumdiv = 1;
int i = 1, p = prime[i];
while (1ll*p*p <= N) {
if (N % p == 0) {
int e = 0;
ll factor = p;
while (N % p == 0) {
e++;
factor *= p;
N /= p;
}
sumdiv *= (factor - 1) / (p - 1);
numdiv *= e + 1;
}
p = prime[++i];
}
if (N > 1) {
numdiv *= 2;
sumdiv *= N + 1;
}
g << numdiv % MOD << ' ' << sumdiv % MOD << '\n';
}
return 0;
}