Bonjour`.
Ne sachant pas comment utiliser gmp sous vc++ 6.0 j'ai pu trouver cette jolie source sur le site de cppfrance.com
Code :
- //=================================================================//
- // Fichier principal //
- //=================================================================//
- #include <stdio.h>
- #include <stdlib.h>
- #include "include/gmp.h" // Librairie mathématique
- //=================================================================//
- // Fonction principale du programme //
- //=================================================================//
- int main(int argc, char* argv[])
- {
- int n;
- mpz_t nbre; // Définit un nombre
- // mp = multiple precision
- // z = entier en math
- // Affiche ce que l'on fait
- printf("Affichage d'un nombre sous la forme 2^n-1\n" );
- // Demande et récupère une valeur de n
- printf("Valeur de n = " );
- scanf("%d", &n);
- // Initialise le nbre de mersenne à 2
- mpz_init(nbre); // Initialise la variable
- mpz_add_ui(nbre, nbre, 2); // Place 2 dedans
- // Calcul 2^n-1
- mpz_pow_ui(nbre, nbre, n); // Calcul 2^n
- mpz_sub_ui(nbre, nbre, 1); // Enlève 1
- // Affiche le nombre
- gmp_printf("%Zd\n", nbre);
- system("pause" );
- return 0;
- }
|
Tout fonctionne #1.
Pour tester j'ai remplacer n par 256, car mon but final est de calculer 256^1048576 soit un chiffre de 1mb
Mais il plante, il me fait une exception, si j'enlève gmp_printf("%Zd\n", nbre); il ne plante pas et si je remet une plus petite valeur comme 2 par exemple. Avec gmp_printf("%Zd\n", nbre); tout fonctionne #1.
Alors c'est moi qui ait mal inclus la dll et la .lib ou bien si c'est un bug de gmp ? j'utilise la version 4.1.2
J'ai tenté de faire un debug et d'après ce que j'ai vu il y aurait une stack overflow dans gmp.dll
Alors je ne sais pas comment régler ce problème
Merci 
Message édité par NullDragon le 31-07-2005 à 17:46:23