diff options
| author | Bertrand <bertrand.horel@gmail.com> | 2016-02-19 14:36:20 +0000 |
|---|---|---|
| committer | Bertrand <bertrand.horel@gmail.com> | 2016-02-19 14:36:20 +0000 |
| commit | 355e4567e68a76356714e2e58a42dcd78533cf6c (patch) | |
| tree | a10914b61699aea703459a82204a5310ef5587e6 /p_adic.cpp | |
| parent | f79ce2d22cd224b9b8f46700d53a1e35a77ef801 (diff) | |
| download | projet_C++-355e4567e68a76356714e2e58a42dcd78533cf6c.tar.gz | |
un peu de nettoyage
Diffstat (limited to 'p_adic.cpp')
| -rw-r--r-- | p_adic.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/p_adic.cpp b/p_adic.cpp new file mode 100644 index 0000000..30080ac --- /dev/null +++ b/p_adic.cpp @@ -0,0 +1,23 @@ +#include "low_discrepancy.hpp" + +p_adic::p_adic(int n, int p) : p(p) { + int puiss = 1; + while (n > 0) { + ak.push_back(n % p); + pk.push_back(puiss); + puiss *= p; + n -= ak.back(); + n /= p; + } + pk.push_back(puiss); +}; + +void p_adic::increment() { + coeff::iterator i = ak.begin(); + while ((i != ak.end()) && ((*i)+1 == p)) { (*i) = 0; i++; } + if (i == ak.end()) { + ak.push_back(1); + pk.push_back(pk.back()*p); + } + else (*i) += 1; +}; |
