Pagini recente » Cod sursa (job #1463199) | Cod sursa (job #2148587) | Cod sursa (job #903689) | Cod sursa (job #1381600) | Cod sursa (job #3268271)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
bitset<1000005> a;
int prime[500005], k;
void Ciur(int n)
{
int i,j;
a[1] = a[0] = 1;
for(i = 4; i <= n; i += 2)
a[i] = 1;
for(i = 3; i * i <= n; i += 2)
if(a[i] == 0)
for(j = i * i; j <= n; j += 2 * i)
a[j] = 1;
prime[++k] = 2;
for(i = 3; i <= n; i += 2)
if(a[i] == 0) prime[++k] = i;
}
int exp(int base, int pwr)
{
int res = 1;
base %= 9973;
while(pwr != 0)
{
if (pwr & 1) res = (res * base) % 9973;
base = (base * base) % 9973;
pwr >>= 1;
}
return res;
}
void F(long long x)
{
int i, e, cnt = 1;
long long s = 1;
for(i = 1; prime[i] * prime[i] <= x; i++)
if(x % prime[i] == 0)
{
e = 0;
while(x%prime[i]==0)
{
x = x / prime[i];
e++;
}
cnt *= (e + 1);
s = s * (exp(prime[i], e + 1) - 1 + 9973) % 9973 * exp(prime[i] - 1, 9971) % 9973;
}
if(x > 1)
{
cnt *= 2;
s = s * (x * x - 1) / (x - 1);
}
fout << cnt << " " << s << "\n";
}
int main()
{
int t, i;
long long x;
Ciur(1000000);
fin >> t;
for(i = 1; i <= t; i++)
{
fin >> x;
F(x);
}
return 0;
}