Cod sursa(job #29714)

Utilizator eddieOlariu Eduard Iuliu eddie Data 9 martie 2007 20:13:12
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <stdio.h>
long nrprimecuxmaimicicax ( long x )
 {
  long d=7;
  long h=1;
  long dx=x;
  if ( x % 2 ==0 )
    {
     dx/=2;
     x/=2;
    }
  while ( x % 2 ==0 && x != 0 && x != 1 )
   {
    x/=2;
   }
  if ( x % 3 ==0 )
    {
     h*=2;
     dx/=3;
     x/=3;
    }
  while ( x % 3 ==0 && x != 0 && x != 1 )
   {
    x/=3;
   }
  if ( x % 5 ==0 )
    {
     h*=4;
     dx/=5;
     x/=5;
    }
  while ( x % 5 ==0 && x != 0 && x != 1 )
   {
    x/=5;
   }
  while ( x != 1 && x != 0 && d <= x/2 )
   {
    if ( x % d == 0 )
       {
	dx/=d;
	x/=d;
	h=h*(d-1);
       }

    while  ( x % d == 0 && x != 0 && x != 1 )
       x/=d;
    d+=2;
   }
  return dx*h;
 }
int main()
 {
  freopen("fractii.in","r",stdin);
  freopen("fractii.out","w",stdout);
  long n;
  scanf("%ld",&n);
  long i;
  long long hhj=0;
/*  for (int j=2;j<=20000;j++)
   {
  */

  for (i=2;i<=n;i++)
      {
       hhj+=nrprimecuxmaimicicax(i);

      }
  printf("%lld",hhj*2+1);
  /*if (j%10==0)
     printf("\n");
 }  */
  fclose(stdout);
  return 0;
 }