Mai intai trebuie sa te autentifici.

Cod sursa(job #77228)

Utilizator recviemAlexandru Pana recviem Data 13 august 2007 21:19:55
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
using namespace std;
//---------------------------------------------------------------------------

	int prim[1000000];
        ifstream input("fractii.in");
        ofstream output("fractii.out");
        int n;
	long long sum;

int citire()
{
        input >> n;
        input.close();
        return 0;
}

int totient(int x)
{
	if (prim[x]) return (x-1);
	else
	{
		float rez=x;
		int div[10000],k=0;
		for (int i=2;i<=x/2;i++)
			if (x % i == 0 && prim[i]) 
			{
				k++;
				div[k]=i;
			}
		if (k==1) return (x-x/div[1]);
		else
		{
			for (int i=1;i<=k;i++)
				rez=rez-rez/div[i];
			return int(rez);
		}
	}
}

void ciur()
{
	for (int i=0;i<1000001;i++)
	{
		prim[i]=true;		
	}
	for (int i=2;i<1000001;i++)
	{
		if (prim[i]) 
		for(int j=2*i;j<1000001;j=j+i)
			prim[j]=false;
	}	
}

int main(int argc, char* argv[])
{
        citire();
        sum = 1;
	ciur();
        for (int i=2;i<=n;i++)
                sum = sum + 2*totient(i);
	cout << sum << "\n";
        output.close();
        return 0;
}
//---------------------------------------------------------------------------