next up previous contents
suivant: Pour terminer monter: Quelques points délicats précédent: Affichage   Table des matières

Exemple

Voici un petit exemple avec quelques calculs sur des entiers multi-précision.

testGMP.c


#include<gmp.h>
#include<stdio.h>

/*
  Place la factorielle de n dans res. res doit etre initialise
 */

void factorielle(long n, mpz_t res)
{
  mpz_t temp; 
  if (n == 0)
    {
      mpz_set_ui(res, 1);
    }
  else
    {
      mpz_init(temp);
      factorielle(n-1, temp);
      mpz_mul_si(res, temp , n);
      mpz_clear(temp);
    }
}

/*
  Place b^n dans res. res doit etre initialise
 */

void puissance(long b, long n, mpz_t res)
{
  mpz_t temp;
  if (n == 0)
    {
      mpz_set_ui(res, 1);
    }
  else
    {
      mpz_init(temp);
      puissance(b, n-1, temp);
      mpz_mul_ui(res, temp, b);
      mpz_clear(temp);
    }
}

/*
  Affiche les 100 premieres puissances de 10.
*/

int main()
{
  mpz_t i;
  long ind;
  mpz_init(i);
  for(ind = 0 ; ind <= 100 ; ind++)
    {
      puissance(10, ind, i);
      mpz_out_str(NULL, 10, i);
      printf("\n");
    }
  mpz_clear(i);  
  return 0;
}

Et voici, pour vous éviter de vous prendre la tête, le makefile.


all : testGMP.c
	gcc -Wall -lgmp testGMP.c

run: all
	./a.out



klaus 2010-08-05