Problème de boucle qui ne se répète pas!
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:
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.