Cod sursa(job #16613)

Utilizator alinaddoca alina alinad Data 13 februarie 2007 19:24:37
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<stdio.h>

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


struct nod
{
 long info;
 nod *urm;
};

nod *prim, *ultim;


long n;


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


void adaugare(long k)
{
 nod *p;
 p=new nod;
 p->info=k;
 p->urm=NULL;
 if(prim==NULL)
   prim=ultim=p;
 else
  {
   ultim->urm=p;
   ultim=p;
  }
}



int main()
{
 long  i, j, t;
 float q, p, s, rez;
 int sem;
 nod *r;
 fscanf(f, "%ld", &n);
 fclose(f);
 s=0;
 for(i=2; i<=n; i++)
   if(nr_prim(i)==1)
     adaugare(i);

 s=0;
 for(i=2; i<=n; i++)
  {
   sem=1;
   p=i;
   r=prim;
   while(r && sem)
    {
     t=r->info;
     if(t>i)
       sem=0;
     else
      {
       if(i%t==0)
	{
	 q=1-1.0/t;
	 p=p*q;
	}
      }
     r=r->urm;
    }
   s=s+2*p;
  }
 rez=s+1;
 fprintf(g, "%.0f", rez);
 fclose(f);

 return 0;

}