DÉCOMPOSITION EN FACTEURS PREMIERS AVEC GMP

Signaler
Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
-
Messages postés
147
Date d'inscription
samedi 1 août 2009
Statut
Membre
Dernière intervention
5 novembre 2019
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52531-decomposition-en-facteurs-premiers-avec-gmp

Messages postés
147
Date d'inscription
samedi 1 août 2009
Statut
Membre
Dernière intervention
5 novembre 2019

Merci Pgl10 je cherche mais ai beaucoup de mal a trouver (gmpxx.h et vc) chou blanc en fait. A plus Merci.
Messages postés
329
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
26 juillet 2021
2
Ccgousset : Je ne connais pas bien les gmpxx.h et gmpxx.lib. J'utilise avec Visual C++ 6.0 la version 4.1.2 de GMP citée dans la description. Cette version vient avec gmp.h et gmp.lib qui n'ont aucun problème de compilation ou de link edit. C'est une version plus ancienne, mais on trouve assez facilement sur Internet des documentations pour cette version. Et mon C++ est en fait principalement du C, les parties spécifiques du C++ ne sont guère utilisées ici. Désolé de ne dire rien de mieux.
Messages postés
147
Date d'inscription
samedi 1 août 2009
Statut
Membre
Dernière intervention
5 novembre 2019

Jai vu ton dernier source sur les carac accentués c'est malin. Ma question utilise tu gmp avec vc6++ et en mode cpp (avecx gmpxx.h et les librairies ...xx.lib ou ...xx.dll si oui connais tu l'astuce pour faire marcher gmpxx.h et vc++. Voila a plus et Merci le Gpl.
Messages postés
10
Date d'inscription
mercredi 31 décembre 2008
Statut
Membre
Dernière intervention
12 décembre 2011

* #include <stdio.h>
* #include <stdlib.h>
* #include <gmp.h>
* int main (int argc, char *argv[]) { // décomposition d'un entier n quelconque
* mpz_t n,i,ii,q; // en produit de nombres premiers
* unsigned int s,t[]={4,2,4,2,4,6,2,6};
* mpz_init(n);
* mpz_init(i);
* mpz_init(ii);
* mpz_init(q);
* // lecture du nombre n à décomposer
* if(argc==2) gmp_sscanf(argv[1],"%Zd",n);
* else {
* input: printf("\nEntrez un nombre entier plus grand que 1 : ");
* gmp_scanf("%Zd",n);
* if(mpz_cmp_si(n,2)<0) goto input; // if(n<2) goto input
* }
* s=2;
* // est-ce que s divise n une ou plusieurs fois ?
* prems : if(mpz_cmp_ui(n,s)==0) goto fin; // si n = s
* if(mpz_divisible_ui_p(n,s)) { // si s divise n
* mpz_div_ui(q,n,s); // q = n / s
* gmp_printf("\n\n %Zd = %Zd * %d",n,q,s);
* mpz_set(n,q); // n = n / s
* goto prems;
* }
* if(s==2) {s=3; goto prems;}
* if(s==3) {s=5; goto prems;}
* s=0;
* mpz_set_si(i,7); // i = 7
* mpz_set_si(ii,49); // ii = 49
* // à partir de i, calcul du plus petit diviseur i de n ( i sera premier )
* boucle: for(;;) { // pour chaque valeur de i
* if(mpz_cmp(ii,n)>0) goto fin; // if(i*i>n) : donc n est premier
* if(mpz_divisible_p(n,i)!=0) { // si i divise n
* mpz_div(q,n,i); // q = n / i
* gmp_printf("\n\n %Zd = %Zd * %Zd",n,q,i);
* mpz_set(n,q); // n = n / i
* goto boucle;
* }
* else { // si i ne divise pas n on devrait prendre pour i le nombre
* mpz_add_ui(i,i,t[s++]); // premier suivant, mais il n'est pas connu. Donc, on prend
* if(s==8) s=0; // l'entier suivant en évitant les multiples de 2, 3 et 5
* mpz_mul(ii,i,i); // ii = i * i
* }
* }
* fin: gmp_printf("\n\n %Zd est premier\n\n\n",n);
* mpz_clear(n);
* mpz_clear(i);
* mpz_clear(ii);
* mpz_clear(q);
* system("pause");
* return 0;
* }
Afficher les 10 commentaires