Pagini recente » Cod sursa (job #16192) | Cod sursa (job #3245215) | Cod sursa (job #2003577) | Cod sursa (job #1421040) | Cod sursa (job #716554)
Cod sursa(job #716554)
#include<iostream>
#include<math.h>
#include<fstream>
#include<string.h>
#include<stdio.h>
#include<assert.h>
using namespace std;
const int MAX_N = 1000000 + 1;
const int MOD = 9973;
long long n;
int eratostene[MAX_N],k = 1,is[MAX_N];
void ciur()
{
int i, j;
for (i = 0; i <= MAX_N; i++)
eratostene[i] = true;
for (i = 2; i <= MAX_N; i++)
if (eratostene[i])
{
is[k] = i;
k++;
for(j = i+i; j <= MAX_N; j += i)
eratostene[j] = false;
}
}
void function()
{
scanf("%d",&n);
int nr_div = 1, suma = 1;
for(int i = 1; i <= k && is[i]*is[i] <= n; i++)
{
if(n % is[i])
continue;
int prod = 1, div = 0, s = 1;
while(n % is[i] == 0)
{
prod *= is[i];
prod %= MOD;
s += prod;
if(s > MOD)
s -= MOD;
n /= is[i];
div++;
}
nr_div *= (div + 1);
suma *= s;
suma %= MOD;
}
if(n != 1)
{ nr_div *= 2;
suma = suma * (n+1) % MOD;
}
cout<<nr_div<<" "<<suma<<endl;
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
ciur();
int t; scanf("%d", &t);
while(t--)
function();
fclose(stdin);
fclose(stdout);
return 0;
}