Pagini recente » Cod sursa (job #1312834) | Cod sursa (job #1107817) | Cod sursa (job #1168266) | Cod sursa (job #1486609) | Cod sursa (job #2936164)
#include <fstream>
using namespace std;
const int VMAX = 1e5;
int e[VMAX+1];
int main()
{
ifstream in("sum.in");
ofstream out("sum.out");
///precalculez vectorul e cu e[i]=indicatorul lui Euler pentru i
for (int i = 2; i <= VMAX; i++)
{
e[i] = i;
}
for (int i = 2; i <= VMAX; i++)
{
if (e[i] == i)///i este prim
{
for (int multiplu = i; multiplu <= VMAX; multiplu += i)///parcurg multiplii lui i
{
e[multiplu] = e[multiplu] / i * (i - 1);
}
}
}
int n;
in >> n;
for (int i = 0; i < n; i++)
{
int x;
in >> x;
out << 2LL * x * e[x] << "\n";
}
in.close();
out.close();
return 0;
}