Cod sursa(job #1148669)

Utilizator 1w1pOneWOneP 1w1p Data 20 martie 2014 23:20:57
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
# include <fstream>
using namespace std;
ifstream f("fractii.in");
ofstream g("fractii.out");

long long n, i;
long long rez = 0;
long long v[1000001];

long long EulerTotient(long long n){
	long long phi = n, i;
	for (i = 2; i*i <= n; ++i){
		if (n%i == 0){
			phi /= i;
			phi *= (i - 1);
			while (n%i == 0)
				n /= i;
		}
	}
	if (n > 1){
		phi /= n;
		phi *= (n - 1);
	}
	return phi;
}

long long solve(long long n){
	long long sol = 0;
	long long i, j;
	for (i = 1; i <= n; ++i)
		v[i] = i;
	for (i = 2; i <= n; ++i){
		if (v[i] == i){
			for (j = i; j <= n; j += i){
				v[j] /= i;
				v[j] *= (i - 1);
			}
		}
	}
	for (i = 2; i <= n; ++i){
		//cout << v[i] << ' ';
		sol += v[i];
	}
	return sol;
}

int main(){
	f >> n;
	/*
	for (i = 1; i <= n; ++i)
		rez += EulerTotient(i);
	*/
	rez = solve(n);
	g << 2*rez + 1 << "\n";
	g.close(); f.close();
	return 0;
}