Cod sursa(job #16585)

Utilizator alinaddoca alina alinad Data 13 februarie 2007 18:57:31
Problema Fractii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>

FILE *f=fopen("fractii.in", "r"), *g=fopen("fractii.out", "w");

long n;


int prim(long k)
{
 long d;
 d=2;
 while(d*d<=k)
  {
   if(k%d==0)
     return 0;
   d++;
  }
 return 1;
}


int main()
{
 long  i, j, m, t;
 float q, p, s, rez;
 long v[12000];
 int sem;
 fscanf(f, "%ld", &n);
 fclose(f);
 s=0;
 v[1]=2;
 j=2;
 for(i=3; i<=n; i++)
   if(prim(i)==1)
     v[j++]=i;
 m=j-1;
 s=0;
 for(i=2; i<=n; i++)
  {
   sem=1;
   p=i;
   for(j=1; j<=m && sem; j++)
    {
     if(v[j]>i)
       sem=0;
     else
      {
       if(i%v[j]==0)
	{
	 t=v[j];
	 q=1-1.0/t;
	 p=p*q;
	}
      }
    }
   s=s+2*p;
  }
 rez=s+1;
 fprintf(g, "%.0f", rez);
 fclose(f);

 return 0;

}