Cod sursa(job #2437784)

Utilizator noperestayadelin mihoc noperestay Data 10 iulie 2019 12:20:38
Problema Fractii Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <cstring>
#include <algorithm>
#include <fstream>
#include <cmath>
#include <limits.h>
#include <iomanip>

using namespace std;

ifstream fin("fractii.in");
ofstream fout("fractii.out");

unsigned long long int indicatorEuler(unsigned long long int n) {

	unsigned long long int euler = 1, auxn = n, d = 2, p, factor;

	while (n > 1) {
		p = 0;

		factor = 1;
		while (n % d == 0) {
			++p;
			n /= d;
			factor = factor * d;
		}


		if (p)
			euler = euler * (d - 1) * (factor / d);


		if (d == 2)
			d++;
		else
			d += 2;

		if (n > 1 && d * d > n)
			d = n;

	}

	return euler;

}

void Rezolvare() {

	unsigned long long int n, numarFractii = 0;
	fin >> n;

	for (unsigned long long int i = 2; i <= n; i++)
		numarFractii = numarFractii + 2 * indicatorEuler(i);

	fout << numarFractii + 1 << " ";

}

int main() {

	Rezolvare();

	return 0;
}