Pagini recente » Cod sursa (job #979303) | Cod sursa (job #669038) | Cod sursa (job #1611300) | Cod sursa (job #604023) | Cod sursa (job #2416825)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000000;
bool ciur[MAXN + 5];
vector<long long> prim;
int main()
{
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int t;
fin >> t;
for(int i = 4; i <= MAXN; i += 2) ciur[i] = 1;
for(int i = 3; i * i < MAXN; i += 2){
if(!ciur[i]){
for(int j = i * i; j < MAXN; j += 2 * i)
ciur[j] = 1;
}
}
prim.push_back(2);
for(int i = 3; i <= MAXN; i += 2){
if(!ciur[i])
prim.push_back(i);
}
while(t){
long long n;
fin >> n;
int d = 0, exp = 0, cnt = 1;
long long put = 1, sum = 1;
while(prim[d] * prim[d] <= n && d < int(prim.size())){
put = 1LL;
exp = 0;
while(n % prim[d] == 0){
n /= prim[d];
put *= prim[d];
exp++;
}
put *= prim[d];
cnt *= (exp + 1);
sum *= (put - 1) / (prim[d] - 1);
d++;
}
if(n > 1){
cnt *= 2;
sum *= (n * n - 1) / (n - 1);
}
fout << cnt << " " << sum % 9973 << "\n";
t--;
}
return 0;
}