Cod sursa(job #239899)

Utilizator BrEacKRazvan Aurariu BrEacK Data 6 ianuarie 2009 07:56:10
Problema Fractii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include<stdio.h>
#include<stdlib.h>
//#include<conio.h>

int prim(int v[],long nr)
 {
  if(!(nr%2)) return 0;
  for(int i=3;i*i<=nr;i+=2)
   {
    if(v[i] && !(nr%i))
     return 0;
   }
  return 1;
 }
void genereaza(int v[],long p[],long n,int &k)
 {
    k=1;
    p[0]=2;
    v[0]=v[1]=0;v[2]=1;v[n]=0;
  for(int i=3;i<n;i++)
   {
    v[i]=v[i+1]=0;
    if(prim(v,i))
     {
      v[i]=1;
      p[k++]=i;
     }



   }
 }

int cmmdc(long a,long b)
 {
  while(a!=b)
   if(a>b)a-=b;
   else b-=a;
   return a;
 }

int main()
 {
//clrscr();
  int k=0;
  //int v[1000000];
  //long pr[100000];
  long n=0;//,nr=0;
   long nr=0;


  FILE *g;
  FILE *f;
  f=fopen("fractii.in","r");
  g=fopen("fractii.out","w");
  fseek(f, 0L, 0);
  fscanf(f,"%ld",&n);
  //n=100;
  //genereaza(v,pr,n,k);

  nr=n;

  long p=0;
  for(p=2;p<=n;p++)
   {

    for(long q=p+1;q<=n;q++)
     {
     /* if(v[q])
       {
	nr++;
       }
       else
       */
	if(q%p)
	 {
	  if(cmmdc(p,q)==1)
	    {
             nr++;
	    }
	 }
    }

   }
  printf("%d",(2*nr-1));
  fprintf(g,"%d",(2*nr-1));
  fclose(f);
  fclose(g);
  return 0;
 }