Cod sursa(job #508504)

Utilizator loginLogin Iustin Anca login Data 8 decembrie 2010 18:08:26
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
 #include <fstream>
#include <iostream>
using namespace std;
int p[200000], np, e[1000001];

void erat()
{
	e[0]=e[1]=1;
	for(int i=1;i<=1000;++i)
		if(e[i]==0)
			for(int j=2;i*j<=1000000;++j)
				e[i*j]=1;
	for(int i=1;i<=1000000;++i)
		if(e[i]==0)
			p[++np]=i;
}


int fi(int n)
{
	int prod=n, q,d=1;
	while(n>1)
	{
		q=0;
		while(n%p[d]==0)
			n/=p[d], ++q;
		if(q)
			prod-=prod/p[d];
		d++;
		if(p[d]*p[d]>n && n>1)
		{
			prod-=prod/n;
			n=1;
		}
	}
	return prod;
}

int main()
{
	erat();
	ifstream fin("fractii.in");
	int n;
	fin>>n;
	long long int sum=1;
	for(int i=2;i<=n;++i)
		sum+=2*fi(i);
	ofstream fout("fractii.out");
	fout<<sum<<endl;
	return 0;
}