Cod sursa(job #22581)

Utilizator axl_gnrMarius Gheorghe axl_gnr Data 26 februarie 2007 20:34:37
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<stdio.h>
#include<string.h>
#include<fstream.h>

long n;
long long    s;
char div[1000001];

long E(long i)
{ float fi, a=1.0, b=1.0;
  fi=i;

  long k;
  for(k=2;k<=n;k++)
     if(div[k]=='1' && i%k==0 && k<=i)
       {a*=k-1;
	b*=k;
       }

  fi=a/b*i;

  return (long)fi;
}


int main()
{
  fstream f("fractii.in",ios::in);
  f>>n;
  f.close();

  long i=2,k;

  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);

  fstream g("fractii.out",ios::out);
  g<<s;
  g.close();

  return 0;
}