Cod sursa(job #314510)

Utilizator andreioneaAndrei Onea andreionea Data 11 mai 2009 23:16:08
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<cstdio>
#include<cstdlib>
#include<cstring>
int n;
int *marcat;
int main()
{int i,j;
 FILE*f=fopen("fractii.in","r");
 fscanf(f,"%d",&n);
 fclose(f);
 marcat=(int*)malloc((n+1)*sizeof(int));
 for(i=1;i<=n;++i) marcat[i]=i;
 long long sum=1;
 int p,k;
 for(i=2;i<=n;++i)
  {if(marcat[i]!=i) sum+=2*marcat[i];
   else 
   {sum+=2*(i-1);
     for(j=i*2;j<=n;j+=i)
      marcat[j]=marcat[j]/i*(i-1); //pt i prim,phi(i^q)=(i-1)*i^(q-1) si
                                  //phi(i*j)=phi(i)*phi(j) pt i,j prime intre ele
    } 
  }
  FILE *g=fopen("fractii.out","w");
  fprintf(g,"%lld",sum);
 return 0;
}