Cod sursa(job #525887)

Utilizator bent_larsenSturzu Antonio-Gabriel bent_larsen Data 26 ianuarie 2011 17:34:03
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<iostream>
#include<cstring>
#include<fstream>
using namespace std;
#define NMAX 1000001

int ciur[NMAX];
int phi[NMAX];

//Gaseste pentru fiecare numar un factor prim
void eratostene()
{
	memset(ciur,0,sizeof(ciur));
	for(int i=2;i<NMAX;i++)
	{
		if(!ciur[i])
		{
			for(int j=i;j<NMAX;j+=i)
			{
				if(!ciur[j])
					ciur[j]=i;
			}
		}
	}
}

void euler()
{
	phi[1]=1;

	for(int i=2;i<NMAX;i++)
	{
		if(!ciur[i]) //numarul e prim
			phi[i]=i-1;
		else
		{
			int nr=i;
			int factor_prim=ciur[i];
			nr/=factor_prim;
			int rez=factor_prim-1;
			while(nr%factor_prim==0)
			{
				nr/=factor_prim;
				rez*=factor_prim;
			}
			phi[i]=rez*phi[nr];
		}
	}
}

int main()
{
	ifstream in("fractii.in");
	ofstream out("fractii.out");

	int n,total=0;
	in>>n;
	for(int i=2;i<=n;i++)
		total+=2*phi[i];
	++total;
	out<<total<<"\n";
	in.close();
	out.close();
}