utilisation de la librairie gmp en c

utilisation de la librairie gmp en c - C - Programmation

Marsh Posté le 20-02-2008 à 12:17:45    

Code :
  1. //=================================================================//
  2. // Fichier principal                                               //
  3. //=================================================================//
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <gmp.h>  // Librairie mathématique
  7. //=================================================================//
  8. // Fonction principale du programme                                //
  9. //=================================================================//
  10. int main(int argc, char* argv[])
  11. {
  12. int    n;
  13. mpz_t  nbre;  // Définit un nombre
  14.      // mp = multiple precision
  15.      // z = entier en math
  16. // Affiche ce que l'on fait
  17. printf("Affichage d'un nombre sous la forme 2^n-1\n" );
  18. // Demande et récupère une valeur de n
  19. printf("Valeur de n = " );
  20. scanf("%d", &n);
  21. // Initialise le nbre de mersenne à 2
  22. mpz_init(nbre);     // Initialise la variable
  23. mpz_add_ui(nbre, nbre, 2);  // Place 2 dedans
  24. // Calcul 2^n-1
  25. mpz_pow_ui(nbre, nbre, n);  // Calcul 2^n
  26. mpz_sub_ui(nbre, nbre, 1);  // Enlève 1
  27. // Affiche le nombre
  28. gmp_printf("%Zd\n", nbre);
  29. system("pause" );
  30. return 0;
  31. }


 
Avec ce programme, j'aimerais utiliser la variable nbre dans une boucle for afin de diviser nbre par tous les entiers qui lui sont inférieurs dans le but de savoir s'il est premier. Or, ma boucle for (écrite comme dans un programme classique) ne marche pas.. J'aimerais donc savoir si l'entier déclaré dans la librairie permet de faire une boucle for et si oui comment. Merci d'avance

Reply

Marsh Posté le 20-02-2008 à 12:17:45   

Reply

Marsh Posté le 20-02-2008 à 12:35:23    

Tu peux faire un boucle for sur une variabe mpz_t, mais évidemment il ne faut pas manipuler le mpz_t directement. Dans ta ligne for tu aura des appels aux fonctions mpz_* pour incrémenter, tester... La variable de boucle.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed