begin process at 2012 05 29 00:31:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Maths & Algorithmes

 > 

combinaisons avec des grands nombres


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

combinaisons avec des grands nombres

vendredi 8 octobre 2004 à 09:53:57 | combinaisons avec des grands nombres

marieinthesky

Bonjour,
j'ai besoin de calculer des arrangements et des combinaisons avec des nombres assez grands, tous mes essais de programmes marchent sur des petits nombres mais donnent n'importe quoi dès que je dépasse 20. Y a-t-il une solution?
merci d'avance!
vendredi 8 octobre 2004 à 09:58:58 | Re : combinaisons avec des grands nombres

malik7934

Moi j'utilise la librairie GMP, elle te permet, théoriquement, d'utiliser des nombres infiniment grands. En fait, la seule limite est la mémoire de ton ordi!!!

J'ai mis il y a un moment déjà une explication pour comment l'installer: http://www.cppfrance.com/forum.v2.aspx?ID=269412

See you, Malik7934

vendredi 8 octobre 2004 à 10:32:43 | Re : combinaisons avec des grands nombres

malik7934

Encore un truc: tu peux tester GMP avant de l'installer, au cas où t'as des doutes, en t'amusant avec l'URL http://www.swox.com/gmp/#TRY, à titre d'exemple, je viens de faire le calcul suivant à cette adresse:

The result of executing 2^1024 is:

computation took 0 ms
output conversion took 0 ms
17976931348623159077293051907890247336179769789423065727343008115773267580550096
31327084773224075360211201138798713933576587897688144166224928474306394741243777
67893424865485276302219601246094119453082952085005768838150682342462881473913110
540827237163350510684586298239947245938479716304835356329624224137216


Pas mal, hein ;o)
vendredi 8 octobre 2004 à 10:38:45 | Re : combinaisons avec des grands nombres

marieinthesky

Merci de ta réponse, ça a l'air effectivement pas mal, mais je n'ai pas compris comment l'installer (j'ai trouvé sur le site un message qui expliquait comment installer gmp sur dev-c++ (ce que j'utilise) mais je suis pas informaticienne, et c'est du chinois pour moi). Est-ce que tu pourrais m'expliquer en français?
merci d'avance!
vendredi 8 octobre 2004 à 10:41:18 | Re : combinaisons avec des grands nombres

malik7934

Hello!

Ben moi je connais pas DEV-C++, désolé. Dis moi où est le message sur le site un message qui explique comment installer gmp sur dev-c++ et si je peux faire quelque chose, ben je le ferai ;o)
vendredi 8 octobre 2004 à 10:46:56 | Re : combinaisons avec des grands nombres

marieinthesky

le message en question est à l'adresse suivante :
http://www.cppfrance.com/forum.v2.aspx?ID=254219
vendredi 8 octobre 2004 à 11:02:14 | Re : combinaisons avec des grands nombres

malik7934

oops, ben je sais pas trop. Je sais pas quel compileur tu as. Peut-être tu devrais demander à Vecchio par exemple (http://www.cppfrance.com/auteurdetail.aspx?ID=19734), je crois qu'il utilises GMP sous dev-c++...

Bonne chance!

A+, Malik7934
vendredi 8 octobre 2004 à 12:53:26 | Re : combinaisons avec des grands nombres

vecchio56

Administrateur CodeS-SourceS
malik7934>le compilo est MinGW
vendredi 8 octobre 2004 à 12:56:09 | Re : combinaisons avec des grands nombres

vecchio56

Administrateur CodeS-SourceS
marieinthesky> tu utilises la formule avec des factorielles? tu devrais peut etre faire le triangle de pascal...
dimanche 10 octobre 2004 à 17:01:39 | Re : combinaisons avec des grands nombres

svear

Est-ce que tu calcules ta combinaison en utilisant les factorielles ? Si c'est le cas tu va dépasser rapidement dépasser ta capacité ordi.

Pourquoi ne recrées-tu pas toi-même ta fonction "comb" en utilisant le fait que "Comb(3, 8) = Comb(5, 8) = (6 * 7 * 8) / (1 * 2 * 3)

Essayes cette fonction...
/* Calcul de la combinaison C(x, y) par simplification de la fraction */
ulong comb(
ushort x, ushort y)
{
/* Déclaration des variables */
ushort i; /* Indice de boucle */
ushort j; /* Indice de boucle */
ushort pivot; /* Pivot de départ de la multiplication */
ulong res; /* Résultat de la combinaison */

/* Si on est en première ou dernière colonne (facultatif mais optimise la fonction) */
if (x == 0 || x == y)
return(1);
/* Si on est en seconde ou avant-dernière colonne (facultatif mais optimise la fonction) */
if (x == 1 || x == (y - 1))
return(y);
/* Recherche du pivot (point à partir duquel on commencera à multiplier) */
pivot=(y ? x) > x ?(y ? x) :x;

/* Calcul de la combinaison par multiplication et division simultanée */
res=1;
for (i=pivot + 1, j=1; i <= y; i++, j++)
res=res * i / j;

/* Renvoi du résultat */
return(res);
}

L'avantage, c'est que je multiplie et divise en parallèle. Donc la valeur de la combinaison ne grossit pas énormément...


Cette discussion est classée dans : nombres, grands, combinaisons


Répondre à ce message

Sujets en rapport avec ce message

traviller avec de grands nombres [ par alfred289 ] est-ce que quelqu'un aurait une façon simple de travailler avec de très grands nombres ( des miliers de chiffres par exemple) class pour manipuler des grands nombres [ par Orkblutt ] Salut,j'aimerai implementer une classe qui me permettrai de manipuler (+,-, /,*,%) des grands nombres (Nb>32bits) mais je ne sais pas du tout comment Multiplication de grands nombres [ par zekicker ] Salut,Je voudrais savoir si qq1 connait une méthode pour effectuer une multiplication de grands nombres comme 467684700 *655000000. En effet, j'obtien librairie grands nombres ^ [ par coucou747 ] Je dévelope en ce moment une librairie qui me permetrais de gérer des nombres de 1024 bits..Je ne fais que du C... Voici la sctructure qui contiendra listes chainées gestion des grands nombres [ par zeth_bw ] bonjour  j'ai un petit probleme tres algorithimique je manipule des listes chainées sur les grands nombres. cad par exemple 10245 donne 5->4->2->0->1l grands nombres [ par freeskieuse ] Bonjour,je suis debutante en C++, j'ai un projet à faire, mais je ne sais pas du tout comment gèrer...SUJET:Pour la création d'entiers arbitrairement Multiplication des grands nombres. [ par J_r_m ] Salut @ tous !!!Je suis debutant en C, et je voudrais pouvoir multiplier deux "grands" nombres de plus de dix chiffres en base 10.Je pensais donc met Comment générer de très grand nombres aléatoires? [ par Erebus ] Bonjour!J'ai un petit problème pour générer de grands nombres de manière aléatoire. J'utilise une portion d'un code-source posté sur ce site, mais les Calcul grands nombres avec chaines de caractères [ par lectpe ] Bonjour. J'ai presque fini de réaliser un logiciel de math. L'utilisateur peut entrer en ligne de commande ce qu'il veut calculer et le logiciel lui somme et multiplication de tres grands nombres en c [ par sarah000c ] slt tt lmonde, je cherche un programme qui calcule la somme et la multiplication de tré grands nombres en language c ,veuillez m'aider c vraiment urge


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales