Cod sursa(job #110566)

Utilizator eddieOlariu Eduard Iuliu eddie Data 26 noiembrie 2007 23:00:50
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <stdio.h>
int prim[5000000],used[10000000];
long nrprim;
void ciur()
{
	long q;
	nrprim=1;
	prim[1]=2;
	for (long i=3; i<=1000000;i+=2)
		if ( used[i]==0 )
		{
			prim[++nrprim]= i;
			for ( long j=i; j<=1000000; j+=i )
				used[j]=1;
		}
}
long nrprimecuxmaimicicax ( long x )
{
	long dx=x;
	long h=1;
	long i=1;
	for (i=1;x>=prim[i] && i<=nrprim ;i++)
	    if ( x%prim[i]==0 )
		{
			dx/=prim[i];
			h=h*(prim[i]-1);
		}
    return dx*h;
}
int main()
{
	freopen("fractii.in","r",stdin);
	freopen("fractii.out","w",stdout);
	long n;
	ciur();
	scanf("%ld",&n);
	long i;
	long hhj=0;
	for (i=2;i<=n;i++)
    {
		hhj+=nrprimecuxmaimicicax(i);
	}
	printf("%ld",hhj*2+1);
	fclose(stdout);
	return 0;
}