Pagini recente » Cod sursa (job #2261751) | Cod sursa (job #499162) | Cod sursa (job #3177772) | Cod sursa (job #912329) | Cod sursa (job #1956740)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
const int MOD = 9973;
int primes[80003];
bool viz[1000003];
int MAX = 1e6+100;
int AM;
inline long long lgput(long long a, int p) {
if(p == 0)
return 1;
if(p == 1)
return a%MOD;
if(p%2 == 0) {
long long t = lgput(a, p/2);
return (t*t)%MOD;
} else {
return (lgput(a, p-1)*(a%MOD))%MOD;
}
}
void solve(long long n) {
int todo = sqrt(n);
int am = 0;
long long sum = 1;
long long prod = 1;
long long i = 0;
for(int I = 1; primes[I] <= todo; I++) {
i = primes[I];
cout << i << '\n';
if(n%i == 0) {
am = 0;
while(n%i == 0) {
n /= i;
am++;
}
sum *= (am+1);
long long T = (lgput(i, am+1)-1+MOD)%MOD;
long long invmod = lgput(i-1, MOD-2);
T = (T*invmod)%MOD;
prod = (prod*T)%MOD;
}
}
if(n != 1) {
sum *= 2;
long long T = (lgput(n, 2)-1+MOD)%MOD;
long long invmod = lgput(n-1, MOD-2);
T = (T*invmod)%MOD;
prod = (prod*T)%MOD;
}
out << sum << " " << prod << '\n';
}
int main() {
int t;
in >> t;
long long n;
primes[++AM] = 2;
for(int i = 3; i <= MAX; i += 2) {
if(!viz[i]) {
viz[i] = 1;
primes[++AM] = i;
for(long long j = 1LL*i*i; j <= MAX; j += i) {
viz[j] = 1;
}
}
}
for(int i = 1; i <= t; i++) {
in >> n;
solve(n);
}
return 0;
}