Cod sursa(job #1466463)

Utilizator greenadexIulia Harasim greenadex Data 29 iulie 2015 11:42:56
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>
#define pb push_back
#define f first
#define s second
#define pii pair<int, int>
#define mp make_pair

using namespace std;

const string name = "fractii",
	     in_file = name + ".in", 
	     out_file = name + ".out";

ifstream fin(in_file);
ofstream fout(out_file);

const int MAX = 1e6 + 1;

bitset<MAX> sieve;
int phi[MAX], n;
long long sol = 1;

void create_sieve(int n){
	for (int i = 2; i <= n; i++)
		phi[i] = i;

	for (int i = 2; i <= n; i += 2){
		sieve[i] = 1;
		phi[i] = phi[i] / 2;
	}

	for (int i = 3; i <= n; i += 2)
		if (!sieve[i])
			for (int j = i; j <= n; j += i){
				sieve[j] = 1;
				phi[j] = phi[j] / i * (i - 1);
			}
}

int main(){
	fin >> n;
	create_sieve(n);
	for (int i = 1; i <= n; i++)
		sol += 2 * phi[i];
	fout << sol;
	return 0;
}