Cod sursa(job #1977401)

Utilizator TincaMateiTinca Matei TincaMatei Data 5 mai 2017 11:08:07
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <cstdio>

const int MAX_E = 1000000;
int fi[1+MAX_E];

int main() {
  int n;
  FILE *fin = fopen("fractii.in", "r");
  fscanf(fin, "%d", &n);
  fclose(fin);

  for(int i = 1; i <= n; ++i)
    fi[i] = i;

  for(int d = 2; d * d <= n; ++d)
    if(fi[d] == d)
      for(int i = d; i <= n; i = i + d)
        fi[i] = fi[i] - fi[i] / d;

  long long rez = 1LL;
  for(int i = 2; i <= n; ++i) {
    rez = rez + fi[i];
    if(fi[i] == i)
      --rez;
  }
  FILE *fout = fopen("fractii.out", "w");
  fprintf(fout, "%lld", 2 * rez - 1);
  fclose(fout);
  return 0;
}