Cod sursa(job #350983)
Utilizator | Alexandru Stoica alutzu | Data | 26 septembrie 2009 14:07:07 |
---|---|---|---|
Problema | Fractii | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.45 kb |
#include<stdio.h>
#define N 1000002
int e[N] ;
int euler ( int n )
{
int i,j;
for(i=2;i<=n;i++)
e[i]=i;
for (i=2; i<=n; i++ )
if ( e[i]==i )
for (j=i; j<=n; j+=i )
e[j]=e[j]/i*(i-1);
int S=0;
for (i=2;i<=n;i++)
S+= e[i] ;
return (2*S+1) ;
}
int main ( )
{
freopen ( "fractii.in" , "r" , stdin ) ;
freopen ( "fractii.out" , "w" , stdout ) ;
int n ;
scanf ( "%d" , & n );
printf ( "%d" , euler (n) );
}