Cod sursa(job #1929337)

Utilizator BarbumateiBarbu Matei Barbumatei Data 17 martie 2017 15:08:41
Problema Fractii Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>
#include <stdlib.h>
#define NMAX 1000000
FILE *fin, *fout;
int phi[NMAX+1];
unsigned long long SUMA;
int main(){
  int n, i, j;
  fin=fopen("fractii.in", "r");
  fout=fopen("fractii.out", "w");
  fscanf(fin, "%d" ,&n);
  ///phi(n)=n*PROD((d-1)/d), d prim si d|n
  for(i=2; i<=n; i++)
    phi[i]=i;///initial phi(n)=n, apoi o sa inmultim cu PROD((d-1)/d)
  for(i=2; i<=n; i++)
    if(phi[i]==i)///daca nu l-am mai prelucrat pana acum
      for(j=i; j<=n; j+=i)
        phi[j]=phi[j]*(i-1)/i;///calculam valoarea
  for(i=2; i<=n; i++)
    SUMA+=phi[i];///precalculare
  fprintf(fout, "%llu", 2*SUMA+1ULL);
  fclose(fin);
  fclose(fout);
    return 0;
}