Pagini recente » Cod sursa (job #495938) | Cod sursa (job #2915864) | Cod sursa (job #2229042) | Cod sursa (job #2440982) | Cod sursa (job #2189825)
#include <iostream>
#include <fstream>
#define NMAX 1000003
#define MOD 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long t;
int Prime[NMAX];
long long NP;
int v[NMAX];
void Ciur()
{
for(long long i=2;i<=NMAX;i++)
{
if (v[i] == 0)
{
Prime[++NP] = i;
for(long long j=i+i;j<=NMAX;j+=i)
v[j] = 1;
}
}
}
long long pow (long long x,long long po)
{
int rez = 1;
x %= MOD;
while(po)
{
if (po % 2)
{
rez *= x;
rez %= MOD;
}
x *= x;
x %= MOD;
po /= 2;
}
return rez;
}
void Solve(long long x)
{
if (v[x] == 0)
{
fout<<2<<' ';
fout<<x%MOD+1%MOD<<'\n';
return;
}
long long nrFact = 1;
long long suma = 1;
for(long long i=1;i<=NP && Prime[i]*Prime[i] <= x;i++)
{
if (x%Prime[i] != 0)
continue;
int p = 0;
while(x%Prime[i] == 0)
{
p++;
x /= Prime[i];
}
nrFact *= (p + 1);
int a,b;
a = (pow(Prime[i],p+1) - 1) % MOD;
b = pow(Prime[i]-1, MOD-2) % MOD;
suma = (((suma*a)%MOD)*b)%MOD;
}
if (x > 1)
{
nrFact *= 2;
suma = (suma*(x+1)) % MOD;
}
fout<<nrFact<<' '<<suma<<endl;
}
int main()
{
Ciur();
fin>>t;
for(long long i=0;i<t;i++)
{
long long x;
fin>>x;
Solve(x);
}
return 0;
}