next up previous contents
suivant : A.7 Pavage avec des remonter : A. Corrigés des programmes précédent : A.5 Suite de Fibonacci

A.6 Pgcd

pgcd.c


#include<stdio.h>

unsigned long pgcd(unsigned long a, unsigned long b)
{
  if (b == 0)
    return a;
  return pgcd(b, a % b);
}

unsigned long fibonacci(unsigned long l)
{
  unsigned long moinsUn, moinsDeux;
  if (l == 0 || l == 1)
    return l;
  moinsUn = 1;
  moinsDeux = 0;
  while( l > 1)
    {
      moinsUn ^= moinsDeux;
      moinsDeux ^= moinsUn;
      moinsUn ^= moinsDeux;
      moinsUn += moinsDeux;
      l--;
    }
  return moinsUn;
}

int main()
{
  unsigned long f1, f2, i;
  f2 = fibonacci(0);
  for(i = 0 ; i <= 40 ; i++)
    {
      f1 = f2;
      f2 = fibonacci(i+1);
      printf("pgcd(%lu, %lu) = %lu\n", f1, f2, pgcd(f1, f2));
    }
  return 0;
}



Alexandre
2009-07-20