Cod sursa(job #2828494)

Utilizator Remus.RughinisRemus Rughinis Remus.Rughinis Data 7 ianuarie 2022 14:38:17
Problema Fractii Scor 0
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXN 1000000

int ciur[MAXN + 1],prim[100];
int main(){
  int n,d,s=0,nr,a,i,j;
  FILE *fin, *fout;

  fin = fopen("fractii.in","r");
  fscanf(fin,"%d",&n);
  fclose(fin);

  s = n*n;
  j = 0;
  for(d=2;d<=n;d++){
    if(ciur[d] == 0){
      for(i=d;i<=n;i+=d)
        ciur[i] += n/d;

      prim[j] =d;
      j++;

    } else{
      a = d;
      i = 0;
      nr = 0;
      while(a > 1 && nr<=1){
        nr = 0;
        while(a % prim[i] == 0){
          a /= prim[i];
          nr ++;
        }
        i++;
      }

      if(nr <= 1){
        for(i=d;i<=n;i+=d)
          ciur[i] --;
      }

    }

    s -= ciur[d];
  }

  fout = fopen("fractii.out","w");
  fprintf(fout,"%d\n",s);
  fclose(fout);
  return 0;
}