Pagini recente » Cod sursa (job #1438204) | Cod sursa (job #2688158) | Cod sursa (job #2352388) | Cod sursa (job #1174994) | Cod sursa (job #1527601)
# include <bits/stdc++.h>
using namespace std;
bool ok[1000000 + 5];
int prim[500000 + 5], N, n, x;
long long EXP, nrdiv, sum;
void ciur() {
int i, j;
for (i = 2; i * i <= 1000000; ++i) ok[i] = true;
for (i = 2; i * i <= 1000000; ++i)
if (ok[i] == true)
for (j = 2 * i; j * j <= 1000000; j += i)
ok[j] = false;
for (i = 1; i * i <= 1000000; ++i)
if (ok[i] == true) prim[++N] = i;
}
int res(int N){
int nr = N, cEXP = EXP;
while (cEXP > 1) {
nr *= N;
cEXP--;
}
return ( (nr - 1) / (N - 1) );
}
void T(int x) {
int cN = 0;
sum = 1;
while (x != 1) {
EXP = 0;
cN++;
while (x % prim[cN] == 0){
x /= prim[cN];
EXP++;
}
nrdiv = nrdiv*(EXP + 1);
EXP++;
sum *= 1LL* res(prim[cN]);
}
}
int main ()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d\n", &n);
ciur();
for (int i = 1; i <= n; i++) {
scanf("%d\n", &x);
sum = 1;
nrdiv = 1;
T(x);
printf("%lld %lld\n", nrdiv, sum);
}
return 0;
}