Cod sursa(job #17908)

Utilizator axl_gnrMarius Gheorghe axl_gnr Data 17 februarie 2007 13:21:54
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<stdio.h>
#include<string.h>


FILE *f;
long n;
unsigned long  s;

long E(long i,char div[1000001])
{ double fi;
  fi=i;

  long k;
  for(k=2;k<=n;k++)
     if(div[k]=='1' && i%k==0 && k<=i)
       fi*=(1-(float)1/k);

  return (long)fi;
}


int main()
{ f=fopen("fractii.in","r");
  fscanf(f,"%ld",&n);
  fclose(f);

  long i=2,k;
  char div[1000001];
  memset(div,'1',n+1);
  while(i<=n)
       {if(div[i]=='1')
	  for(k=2;i*k<=n;k++)
	     div[i*k]='0';
	i++;
       }
  s=1;
  for(i=2;i<=n;i++)
      s+=2*E(i,div);

  f=fopen("fractii.out","w");
  fprintf(f,"%ld",s);
  fclose(f);

  return 0;
}