Pagini recente » Cod sursa (job #2621868) | Cod sursa (job #501424) | Cod sursa (job #1758431) | Cod sursa (job #2277379) | Cod sursa (job #1466669)
#include <fstream>
#include <bitset>
using namespace std;
ofstream fout("ssnd.out");
ifstream fin("ssnd.in");
const int NMAX = 1000005;
const int MOD = 9973;
long long t, n;
long long prime[NMAX];
bitset<NMAX> ciur;
void construieste_ciur()
{
ciur.set();
ciur[0] = ciur[1] = false;
for(int i=2; i<NMAX; i++) {
if(ciur[i]){
prime[++prime[0]] = i;
for(int j=i+i; j<NMAX; j+=i)
ciur[i] = false;
}
}
}
long long pow(long b, long e)
{
long long sol = 1;
while(e) {
if(e & 1) sol *= b;
b *= b;
e >>= 1;
}
return sol;
}
int main()
{
construieste_ciur();
fin >> t;
for(int i=1; i<=t; i++)
{
long long nr = 1, suma = 1;
fin >> n;
for(int j=1, p=0; j<=prime[0] && prime[j] * prime[j] <= n; j++) {
if(n % prime[j] == 0) {
p = 0;
while(n % prime[j] == 0) {
n /= prime[j];
p++;
}
nr *= (p + 1);
suma *= (((pow(prime[j], p + 1) - 1) / (prime[j] - 1))) % MOD;
}
}
if(n > 1) {
nr *= 2;
suma = suma * (n + 1) % MOD;
}
fout << nr << ' ' << suma << '\n';
}
return 0;
}