Pagini recente » Cod sursa (job #338470) | Cod sursa (job #36015) | Cod sursa (job #2417140) | Cod sursa (job #1074482) | Cod sursa (job #1463986)
#include <fstream>
#define DIM 8192
using namespace std;
ifstream fin ("sum.in");
ofstream fout ("sum.out");
int N, Fi[100010];
long long X;
char P[DIM + 16], *now;
void Euler_Prin_Ciur() /// Fi(n) reprezintă numărul de numere mai mici sau egale cu n și prime cu acesta;
{
for (int i = 1; i <= 100000; i++) Fi[i] = i;
for (int i = 2; i <= 100000; i++)
{
if (Fi[i] == i)
{
for (int j = i; j <= 100000; j += i)
{
Fi[j] /= i;
Fi[j] *= (i - 1);
}
}
}
}
void Verif()
{
if (*now == '\0')
{
fin.get(P, DIM, '\0');
now = P;
}
}
int Get()
{
while (*now < '0' || *now > '9')
{
now ++;
Verif();
}
int number = 0;
while (*now >= '0' && *now <= '9')
{
number = number * 10 + *now - '0';
now ++;
Verif();
}
return number;
}
int main()
{
now = P;
Verif();
Euler_Prin_Ciur();
N = Get();
while (N--)
{
X = Get();
fout << X * 2 * Fi[X] << '\n';
}
fin.close();
fout.close();
return 0;
}