Cod sursa(job #92294)

Utilizator frEak-Calin Paul frEak- Data 14 octombrie 2007 21:06:39
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
//melc.
#include<stdio.h>
int n;
long long teta[1000001],rez; //totient


void citire()
{
	freopen("fractii.in","r",stdin);
	scanf("%d",&n);
	fclose(stdin);
}
void euratostene()
{	
	int i,j;
	teta[1]=1; teta[2]=1;
	for (i=2;i<=n;i+=2) teta[i]=i/2;
	for (i=3;i<=n;i+=2) //ciuru
	{  
		if (teta[i] == 0) 
		{
			teta[i]=i-1;
			for (j=i*2;j<=n;j+=i)
				if (teta[j]==0) teta[j]=j*(i-1)/i;
				else teta[j]=teta[j]*(i-1)/i;
		}
	}  
}
int main()
{
	citire();
	euratostene();
	teta[1]=1;teta[2]=1;
	for (int k=2;k<=n;k++)
		rez+=teta[k];
	rez=2*rez+1;
	freopen("fractii.out","w",stdout);
	printf("%lld \n",rez);
	fclose(stdout);
	return 0;
}