Cod sursa(job #306594)

Utilizator ucc_5Usurelu Catalin ucc_5 Data 21 aprilie 2009 15:00:18
Problema Fractii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream.h>
#include <math.h>
#define min(a,b) a>b?a:b

ifstream f ("fractii.in");
ofstream g ("fractii.out");

long v[1000001],nr_ciur=1,n;

void citire ()
{ f>>n; 
  f.close ();
}            

void ciur (long n)
{ long aux=sqrt(n),i,j;
  v[1]=2;
  for (i=3; i<=aux; i+=2)
   { if (v[i]==0)
     { v[++nr_ciur]=i;
       for (j=3*i; j<=n; j+=i<<1)
	v[j]=1;
     }
   }
   for (; i<=n; i+=2)
    if (v[i]==0)
     v[++nr_ciur]=i;
   v[0]=1; v[nr_ciur+1]=1; //da eroare verif daca nu fac asa
}

int verif (long i, long j)
{ for (long x=1; x<=nr_ciur && (x<=min(i,j)); x++)
   if (i%v[x]==0 && j%v[x]==0) return 0;
  return 1;
}


long nr_fractii (long n)
{ long fractii=0;
   for (long i=1; i<=n; i++)
    for (long j=1; j<=n; j++)
     if (verif(i,j)) fractii++;
   return fractii;
}

int main ()
{ citire ();
  ciur (n);
  g<<nr_fractii (n);
  g.close ();
  return 0;
}