Bibliothèque GMP
Résolu/Fermé
A voir également:
- Bibliothèque GMP
- Ce fichier contient l'historique des livres empruntés à la bibliothèque. combien de titres différents contient-il ? ✓ - Forum Excel
- Bibliotheque mac - Astuces et Solutions
- Bibliothèque archicad gratuite - Forum Graphisme
- Projet ou bibliothèque introuvable ✓ - Forum VB / VBA
- Le point d'entrée de procédure est introuvable dans la bibliothèque de liens dynamiques ✓ - Forum Logiciels
1 réponse
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
27 mars 2016 à 23:30
27 mars 2016 à 23:30
28 mars 2016 à 14:01
Merci, j'ai essayé d'adapter les exemples à mon problème mais mon programme crash directement :
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <gmp.h> #define P 100 typedef enum {False = 0, True = 1} Bool; long long int powInt(long long int base, long long int exp) { long long res = 1; for(long long int i = 0 ; i < exp ; i++) res *= base; return res; } int main() { long long int n; mpz_t la; mpz_t one, two; mpz_init(la); long long int p = P; Bool test = True; printf("6\n"); for(n = 3; n <= p; n+=2) { test = True; long long int j; long long int carre = (powInt(2, n)-1); for(j = 2; j*j <= carre; j++) { if(carre % j == 0) { test = False; break; } } if(test) { mpz_set_ui(one, powInt(2, n-1)); mpz_set_ui(two, powInt(2,n)-1); mpz_mul_si(la, one, two); gmp_printf("%Zd\n", la); } } return 0; }28 mars 2016 à 16:26
29 mars 2016 à 16:49
29 mars 2016 à 19:20
Par contre le calcul res *= base devrait être en mpz_t car cette valeur peut rapidement exploser et dépasser.
Remarque : il y a plus malin qu'une boucle for pour calculer la puissance (en calculant avec des grands nombres tu verras que même les algos les plus simples doivent être optimisés)
30 mars 2016 à 23:18
Ce problème est résolu, je vous remercie pour votre aide.
Néamoins j'ai un autre soucis, j'aimerais déclarer une variable de type string ou char avec GMP, pour ensuite la renvoyer en sortie vers un fichier texte avec
Cependant lorsque je déclare par exemple
puis
*FILE fichier; fichier = fopen("test.txt", "a"); mpz_out_str(fichier, 10, texte);J'aimerais que la touche entrée soit insérée dans mon fichier texte.
Or au lieu de l'entrée, des nombres sont affichés à la place, et généralement toujours les mêmes (quelque chose comme 82124573214).
Comment est-ce-que je peux faire pour simplement afficher l'entrée dans mon fichier texte ? (sans passer par , sinon mon programme crash).
A mon avis c'est à cause de la base 10 non ?
Merci