Cod sursa(job #1253479)

Utilizator laurageorgescuLaura Georgescu laurageorgescu Data 1 noiembrie 2014 13:26:06
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<cstdio>

using namespace std;

FILE *fin = fopen( "fractii.in" , "r" ), *fout = fopen( "fractii.out" , "w" );

const int nmax = 1000000;
int e[ nmax + 1 ], s[ nmax + 1 ];

void calc( int n ) {
    for( int i = 2; i <= n; ++ i ) {
        e[ i ] = i;
    }
    for( int i = 2; i <= n; ++ i ) {
        if ( e[ i ] == i ) {
            for( int j = i; j <= n; j += i ) {
                e[ j ] = e[ j ] / i * (i - 1);
            }
        }
    }
    for( int i = 2; i <= n; ++ i ) {
        s[ i ] = s[ i - 1 ] + e[ i ];
    }
}
int main() {
    int n;
    fscanf( fin, "%d", &n );
    calc( n );
    fprintf( fout, "%d\n", 2 * s[ n ] + 1 );
    fclose( fin );
    fclose( fout );
    return 0;
}