Cod sursa(job #350984)
Utilizator | Data | 26 septembrie 2009 14:08:58 | |
---|---|---|---|
Problema | Fractii | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.48 kb |
#include<stdio.h>
#define N 1000002
long long e[N] ;
long long 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]/(long long)i*(i-1);
long long 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 ( "%lld" , euler (n) );
}