Cod sursa(job #3240556)

Utilizator EricDimiericdc EricDimi Data 16 august 2024 15:56:19
Problema Fractii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#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;
}