Pagini recente » Cod sursa (job #1709288) | Cod sursa (job #2451381) | Cod sursa (job #2287291) | Cod sursa (job #2474538) | Cod sursa (job #3240556)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("fractii.in");
ofstream g("fractii.out");
const int NMAX = 1e6;
int phi[NMAX + 1];
int N;
long long nr;
int main()
{
/// phi(n) = n * [(p1 - 1) / p1 * (p2 - 1) / p2 * ... * (pk - 1) / pk]
f >> N;
f.close();
for (int i = 1; i <= N; i++)
phi[i] = i;
for (int i = 2; i <= N; i++)
if (phi[i] == i)
for (int j = i; j <= N; j += i)
phi[j] = phi[j] / i * (i - 1);
/**
1/1 1/2 1/3 1/4 2/1 2/3 3/1 3/2 3/4 4/1 4/3
1/1 -(1/1) | phi[1]
1/2 2/1 2 | 2 * phi[2]
1/3 3/1 2/3 3/2 | 2 * phi[3]
1/4 4/1 3/4 4/1 | 2 * phi[4]
*/
for (int i = 1; i <= N; i++)
nr += phi[i];
nr = nr * 2 - 1;
g << nr;
g.close();
return 0;
}