Pagini recente » Cod sursa (job #2427027) | Cod sursa (job #1938810) | Cod sursa (job #1825096) | Cod sursa (job #190758) | Cod sursa (job #2970278)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pi;
#define pb push_back
#define mp make_pair
#define f first
#define s second
int is_prime[1000001];
vi primes;
int mod = 9973;
void sieve(){
memset(is_prime, 1, sizeof(is_prime));
is_prime[0] = is_prime[1] = false;
for(int i = 2; i * i <= 1e6; i++){
if(is_prime[i]){
for(int j = i * i; j <= 1e6; j += i)
is_prime[j] = false;
}
}
for(int i = 2; i <= 1e6; i++)
if(is_prime[i])
primes.pb(i);
}
ll binpow(int a, int b){
ll res = 1;
while(b > 0){
if(b & 1){
res = res * a % mod;
}
a = a * a % mod;
b /= 2;
}
return res;
}
void solve(){
ll n, m;
cin >> n;
m = n;
vector<pi> a;
ll cnt_div = 1, sum_div = 1;
for(int i = 0; i < primes.size(); i++){
if(primes[i] > sqrtl(m)){
//cout << primes[i] << "A" << ' ' << sqrtl(m) << ' ' << n << '\n';
break;
}
int cnt = 0;
while(n % primes[i] == 0){
n /= primes[i];
cnt++;
}
if(cnt != 0)
a.pb(mp(primes[i], cnt));
}
if(n != 1)
a.pb(mp(n, 1));
for(int i = 0; i < a.size(); i++){
//cout << a[i].f << ' ';
cnt_div *= (a[i].s + 1);
sum_div *= (binpow(a[i].f, a[i].s+1)-1)/(a[i].f-1);
sum_div %= mod;
}
cout << cnt_div << ' ' << sum_div << '\n';
}
int main(){
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
ios::sync_with_stdio(0); cin.tie(0);
int t = 1;
sieve();
cin >> t;
while(t--){
solve();
}
}