next up previous contents
suivant: Pavage avec des L monter: Corrigés des programmes précédent: Suite de Fibonacci   Table des matières

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;
}



klaus 2010-08-05