Pagini recente » Cod sursa (job #174885) | Cod sursa (job #174591) | Cod sursa (job #102745) | Cod sursa (job #1235736) | Cod sursa (job #2495168)
#include <bits/stdc++.h>
#define MOD 9973
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
int t, n, i, m, a, b;
int p[100005], f[1000005];
int lgput (int a, int b){
if (b == 0){
return 1;
}
else{
int r;
r = lgput (a, b/2);
if (b%2 == 0){
return r*r%MOD;
}
else{
return a*r*r%MOD;
}
}
}
void solve (int n, int &nrdiv, int &sumadiv){
int i, e, x, d;
nrdiv = sumadiv = 1;
for (i=1; p[i]*p[i]<=n && n!=1; i++){
if (n%p[i] == 0){
e = 1;
while (n%p[i] == 0){
e++;
n /= p[i];
}
nrdiv *= e;
x = lgput (p[i], e) - 1;
if (x < 0)
x += MOD;
x = x * lgput ((p[i]+MOD-1)%MOD, MOD-2)%MOD;
sumadiv *= x % MOD;
}
}
if (n != 1){
d = n%MOD;
nrdiv *= 2;
x = lgput (d, 2) - 1;
if (x < 0)
x += MOD;
x = x * lgput ((d+MOD-1)%MOD, MOD-2)%MOD;
sumadiv *= x % MOD;
}
}
void precalc (){
int i, j;
for (i=2; i<=1000000; i++){
if (f[i] == 0){
p[++m] = i;
for (j=i+i; j<=1000000; j+=i){
f[j] = 1;
}
}
}
}
int main(){
precalc();
fin >> t;
for (;t--;){
fin >> n;
solve(n, a, b);
fout << a << " " << b << "\n";
}
return 0;
}