Salut, j'ai une fonction qui me sert à générer des grands nombres.
Seulement je rencontre un problème, lorsque je veux générer un nombre de 1024 bits par exemple en base 16;
donc ça me fait 1024 / 4 = 256 chiffres. (n.nbChiffres est donc égale à 256)
Il rentre seulement une seule fois dans la boucle et puis il en ressors même si ma condition i < n.nbChiffres est vraie!
Ma fonction generate est déclarée statique.

Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
BigInt BigInt::generate (int nbBits, unsigned int base) {
        unsigned int nearestPowerOfTwo = math::Math::logn(base, 2);
        base = math::Math::power(2, nearestPowerOfTwo);
        BigInt n;
        n.base = base;
        n.nbChiffres = (nearestPowerOfTwo == 1) ? base : nbBits / base * nearestPowerOfTwo;
        //std::cout<<"nb chiffres : "<<n.nbChiffres<<std::endl;
        do {
             for (unsigned long long int i = 0; i < n.nbChiffres; ++i) {
                 unsigned int c = math::Math::random(base);
                 //std::cout<<"c : "<<c<<" i : "<<(i < n.nbChiffres)<<std::endl;
                 n.insert(c, 0);
             }
 
         } while (n.isNull());
         n.shorten();
         return n;
    }

Bon là à part un problème de compilo, je ne vois pas du tout ce que ça pourrait être car logiquement il devrait continuer à parcourir la boucle jusqu'à que la condition soit fausse.