Cod sursa(job #437911)

Utilizator darrenRares Buhai darren Data 10 aprilie 2010 11:10:20
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<fstream>
#include<vector>
using namespace std;

void gen();
void read();
void doit();
void write();

int n;
vector<int> phi(1000005);
long long sum;

int main() {
	read();
	doit();
	write();
	return 0;
}

void read()
{
	ifstream fin( "fractii.in" );
	fin >> n;
	fin.close();
}

void doit()
{
	int i, j;
	for ( i = 2; i <= n; ++i )
		phi[i] = i;
	for ( i = 2; i <= n; ++i )
		if ( phi[i] == i )
		{
			for ( j = 2 * i; j <= n; j += i )
			{
				phi[j] /= i;
				phi[j] *= (i - 1);
			}
			--phi[i];
		}
			
	for ( i = 2; i <= n; ++i )
		sum += phi[i];
	sum *= 2;
	sum += 1;
}

void write()
{
	ofstream fout( "fractii.out" );
	fout << sum;
	fout.close();
}