Pagini recente » Cod sursa (job #1799469) | Cod sursa (job #1731710) | Cod sursa (job #386491) | Autentificare | Cod sursa (job #3210064)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int n, x;
int f[1000001], prime[100001];
int nrprime;
int v[10000];
const int MOD = 9973;
void eratostene(){
f[0] = f[1] = 1;
for(int i = 2;i * i <= 1000000;++i)
if(!f[i])
for(int j = 2;i * j <= 1000000;++j)
f[i * j] = 1;
for(int i = 1;i<=1000000;++i)
if(f[i] == 0)
prime[++nrprime] = i;
}
long long putere(long long nr, long long put){
nr%=MOD;
if(nr == 0)
return 0;
long long rez = 1;
while(put){
if(put % 2 == 1){
rez *= nr;
rez %= MOD;
put--;
}
nr *= nr;
nr %= MOD;
put /= 2;
}
return rez;
}
void suma_si_nr_div(int nr){
int nrdiv = 1;
long long sumdiv = 1;
int ind = 1;
while(prime[ind] * prime[ind] <= nr){
if(nr % prime[ind]){
ind++;
continue;
}
int p = 0;
while(nr % prime[ind] == 0)
nr /= prime[ind], p++;
nrdiv *= (p + 1);
long long p1 = (putere(prime[ind],p + 1) - 1) % MOD;
long long p2 = putere(prime[ind] - 1, MOD - 2) % MOD;
sumdiv = (((sumdiv * p1) % MOD) * p2) % MOD;
ind++;
}
if(nr > 1){
nrdiv *= 2;
sumdiv = ((sumdiv * (nr + 1)) % MOD);
}
fout << nrdiv << ' ' << sumdiv << '\n';
}
int main(){
fin >> n;
for(int i = 1;i<=n;++i)
fin >> v[i];
eratostene();
for(int i = 1;i<=n;++i){
suma_si_nr_div(v[i]);
}
return 0;
}