Pagini recente » Cod sursa (job #1871884) | Cod sursa (job #2827838) | Cod sursa (job #1513439) | Cod sursa (job #1734597) | Cod sursa (job #1247888)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
#define Nmax 1000000
#define Pmax 100000
vector< bool > isPrime(Nmax);
int prim[Pmax], nrP;
int main()
{
int i, j, a, t, s, NR, p, nr, sum;
prim[0] = 2; nrP = 1;
for(i = 3; i < Nmax; i += 2)
{
while(isPrime[i] == 1 && i < Nmax) i += 2;
if(i < Nmax) prim[nrP++] = i;
for(j = i * i; j < Nmax && j >= 0; j += (i << 1)) isPrime[j] = 1;
}
fin >> t;
for(; t; --t)
{
fin >> a;
s = NR = 1;
for(i = 0; i < nrP; ++i)
{
sum = 0;
for(nr = 0, p = 1; a % prim[i] == 0; a /= prim[i])
{
++nr;
sum += p;
p *= prim[i];
}
sum += p;
s *= sum;
NR *= nr + 1;
}
if(a != 1)
{
//a este nr prim
NR *= 2;
s *= a + 1;
}
fout << NR << ' ' << s << '\n';
}
return 0;
}