Cod sursa(job #87993)

Utilizator marcel9105Marcel Grec marcel9105 Data 29 septembrie 2007 22:47:36
Problema Fractii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<fstream.h>
unsigned int cmmdc(unsigned int u, unsigned int v)
{
  int shift;
     if (u == 0 || v == 0)
      return u | v;
     for (shift = 0; ((u | v) & 1) == 0; ++shift) {
	u >>= 1;
	v >>= 1;
    }
     while ((u & 1) == 0)
      u >>= 1;
      do {
	while ((v & 1) == 0)
	  v >>= 1;
	if (u <= v) {
	    v -= u;
	} else {
	    int diff = u - v;
	    u = v;
	    v = diff;
	}
	v >>= 1;
    } while (v != 0);
     return u << shift;
}
int main()
{
 ifstream fin("fractii.in");
 ofstream fout("fractii.out");
 unsigned long a,b,n,c=0;
 fin>>n;
 for(a=2;a<=n;a++)
    for(b=1;b<=n;b++)
	if(cmmdc(a,b)==1) c++;
 fout<<(c+n);
 fout.close();
 return 0;
}