Cod sursa(job #2781316)

Utilizator vladburacBurac Vlad vladburac Data 9 octombrie 2021 08:56:22
Problema Fractii Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <stdio.h>
#include <stdlib.h>

int phi[1000001];
int main() {
  FILE *fin, *fout;
  int n, i, j;
  long long s;
  fin = fopen( "fractii.in", "r" );
  fscanf( fin, "%d", &n );
  fclose( fin );
  // n = suma de phi(d), pentru oricare d | n
  // => phi(n) =  n - suma de phi(d), d | n, d < n
  // sau phi(n) = n * ( produs de ( d - 1 ) / d ), unde d factor prim din descompunerea lui n
  for ( i = 1; i <= n; i++ )
    phi[i] = i;
  s = 0;
  for ( i = 2; i <= n; i++ ) {
    if( phi[i] == i ) {
      for ( j = i; j <= n; j+=i )
        phi[j] = phi[j] / i * ( i - 1 );
    }
    s += phi[i];
  }
  fout = fopen( "fractii.out", "w" );
  fprintf( fout, "%lld", 2 * s + 1 );
  fclose( fout );
  return 0;
}