Partage
  • Partager sur Facebook
  • Partager sur Twitter

la plus grande variable de nombre entier

une variable qui stocke des nombre genre 2^102456547895454565475

    29 juin 2006 à 22:13:56

    Bonsoir!
    je suis a la moitier des cours (au chapitre "7) Lire et écrire dans des fichiers") et j'ai une question qui me préocupe:
    Comment faire pour stocké de grand nombre ?
    du genre 2^plusieur millions
    on les garde en type string ??
    on leur applique des fonctions du genre log pour les rendre moin grand puis on les affiche avec la fonction e() ??(je pense pas que sa marche car e renvoie surement un double qui n'est pas suffisant)

    je fais un struc avec des centaine de variable long et je coupe mon nombre en plusieur morceau du genre
    123456789 i1=12345 i2=6789 et a l'affichage je les concaténe (sa se dit :euh:) "%ld%ld%ld" ....
    (en fesant sa je peux seulement multiplier facilement les autres opérations sont des casse tete :) )
    merci de me répondre
    Cordialement NeMeSiS
    • Partager sur Facebook
    • Partager sur Twitter
      29 juin 2006 à 22:29:49

      Normalement tu n'auras pas besoin de nombres aussi grand (je programme depuis des années et je n'en ai jamais eu besoin).
      Sinon, il est facile d'écrire une classe permettant de faire ça (et de toute façon tu dois pouvoir en trouver sur le net), en C c'est plus difficile à utiliser car il n'y a pas de surcharge d'opérateur...

      Citation : nemesisTHEone

      du genre 2^plusieur millions


      Dans tous les cas, oublies ça ^^ Ca prendrait beaucoup de place en mémoire...
      (2^8192-1) nécessite déjà 1 kilo-octet, alors imagine...
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        29 juin 2006 à 23:03:44

        Qu'est ce que tu compte faire avec des nombres si grand ?
        (Ca m'intéresse ^^)
        • Partager sur Facebook
        • Partager sur Twitter
          29 juin 2006 à 23:44:37

          Enfaite c'est pendant les premiers cours quand on récupérait des nombre entré dans la console: des fois je forcé un peu sur le 999999999999999999999999999999999999999999999999999
          et sa posait probléme :D

          Aussi dans le cour pour les calculs affin de m'entrainer j'ai fait une fonction pour répondre a un des exos de mon devoir de math qui était :"de
          combien de chiffre se compose le nombre (2^113254657854)-1 en base 10"
          j'ai fait sa

          unsigned long double resultat = 1, x;
          //... en récupére le nombre dans x
          resultat +=floor(log10(x));

          mais bon sa marche seulement avec les nombres qui peuvent etre contenu dans un double :s et sa marche pas pour mon (2^113254657854)-1 ^^

          [MODE raconter sa vie OFF]

          en éspérant avoir répondu a ta question :D lol
          • Partager sur Facebook
          • Partager sur Twitter
            29 juin 2006 à 23:49:49

            Il y a le type unsigned long long qui peut contenir les plus grand nombre en C je croi :) Sinon tu devra passer pas les champs de bits:

            struct Uint128
            {
                unsigned int x:128;
            };

            Ç'est comme ça de mémoire mais documente toi un peu car je sui pas sur
            • Partager sur Facebook
            • Partager sur Twitter
              30 juin 2006 à 11:54:59

              Il y a mon projet GN (que je devrais reprendre d'ailleurs, c'est encore pas mal buggé) qui fait cela : ici.

              Si ca te convient, écris-moi je te donnerai une version plus récente que celle disponible sur le site.

              edit: passionné par les Mersenne permiers aussi? ;) Je laissais mon PC tourner jour et nuit pour en trouver.

              edit2 : On peut trouver une approximation de la solution à ton problème initial en 5 secondes, et on peut trouver la réponse exacte sans ordinateur ;)
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                30 juin 2006 à 12:03:12

                Pour les très grand nombres, tu peux utiliser le type long long int (2^64 nombres), ou double (tu perds de la précisions, les derniers chiffres ne sont plus exacts, mais tu peux monter plus haut).

                Sinon, il y a des libs comme GMP, permettant de manipuler des grands nombres (comme le projet GN de SuperMat). GMP c'est très simple à utiliser, et ça permet de faire plein de choses ;)
                • Partager sur Facebook
                • Partager sur Twitter

                la plus grande variable de nombre entier

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown