Pagini recente » Cod sursa (job #1593718) | Cod sursa (job #508874) | Cod sursa (job #1838050) | Cod sursa (job #341927) | Cod sursa (job #1753932)
#include <bits/stdc++.h>
#define MOD 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int n;
int prime[200000], k;
int t[1000005];
int f[20], expo[20], nrf;
int Putere(int a, int n)
{
int p = 1;
while(n > 0)
{
if(n % 2 == 1)
{
p = (1LL * p * a) % MOD;
n--;
}
n /= 2;
a = (1LL * a * a) % MOD;
}
return p;
}
void Ciur()
{
int i, j;
prime[++k] = 2;
for (i = 3; i * i <= 1000000; i += 2)
if (t[i] == false)
{
prime[++k] = i;
for (j = i * i; j <= 1000000; j = j + 2 * i)
t[j] = true;
}
}
void Solve(long long n)
{
int nrd, i, d, e;
nrf = 0;
nrd = i = 1;
d = 2;
while( n > 1 && d * d <= n && i <= k)
{
if( n % d == 0 )
{
f[++nrf] = d;
e = 1;
while(n % d == 0)
{
e++;
n /= d;
}
nrd *= e;
expo[nrf] = e;
}
d = prime[++i];
}
if( n > 1 )
{
f[++nrf] = n;
nrd *= 2;
expo[nrf] = 2;
}
long long sd, x;
sd = 1;
for(i = 1; i <= nrf; i++)
{
x = (Putere(f[i], expo[i]) - 1) % MOD;
x = 1LL * x * Putere(f[i] - 1, MOD - 2) % MOD;
sd = 1LL * sd * x % MOD;
}
fout << nrd << " " << sd << "\n";
}
void Read()
{
int i;
long long x;
fin >> n;
for(i = 1; i <= n; i++)
{
fin >> x;
Solve(x);
}
fin.close();
}
int main()
{
Ciur();
Read();
return 0;
}