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.
Partager