Pagini recente » Cod sursa (job #3262701) | Cod sursa (job #3169722) | Borderou de evaluare (job #1743906) | Cod sursa (job #2062702) | Cod sursa (job #2206219)
#include<fstream>
#include<cmath>
using namespace std;
ifstream f ("ssnd.in");
ofstream g ("ssnd.out");
#define NMAX 1000000
int n , a[NMAX] , k , rez = 1 , fin , val , t, x , p , div = 1;
bool v[NMAX];
int main ()
{
f >> t;
a[++k] = 2;
for (int i = 2; i <= NMAX; i = i + 2)
v[i] = 1;
for (int i = 3; i <= NMAX; i = i + 2)
{
if (v[i] == 0)
{
a[++k] = i;
for (int j = i + i; j <= NMAX; j = j + i)
v[j] = 1;
}
}
for (int i =1 ; i <= t; ++i)
{
f >> x; int dubl = x; int ok = 1;
while (x != 1 && ok)
{
for (int j = 1; j <= x && ok; ++j)
{
p = 0;
while (dubl % a[j] == 0)
{
p = p + 1;
dubl = dubl / a[j];
}
if (dubl == 1) ok = 0;
div = div * (p + 1);
val = pow (a[j] , p + 1);
fin = (val - 1 ) / (a[j] - 1);
rez = rez * fin;
}
}
if (rez == x)
g << 2 << ' ' << rez + 1 << '\n';
else
g << div << ' ' << rez << '\n';
rez = 1; div = 1;
}
g.close ();
return 0;
}