aboutsummaryrefslogtreecommitdiffstats
path: root/p_adic.cpp
diff options
context:
space:
mode:
authorBertrand <bertrand.horel@gmail.com>2016-02-19 14:36:20 +0000
committerBertrand <bertrand.horel@gmail.com>2016-02-19 14:36:20 +0000
commit355e4567e68a76356714e2e58a42dcd78533cf6c (patch)
treea10914b61699aea703459a82204a5310ef5587e6 /p_adic.cpp
parentf79ce2d22cd224b9b8f46700d53a1e35a77ef801 (diff)
downloadprojet_C++-355e4567e68a76356714e2e58a42dcd78533cf6c.tar.gz
un peu de nettoyage
Diffstat (limited to 'p_adic.cpp')
-rw-r--r--p_adic.cpp23
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;
+};