summaryrefslogtreecommitdiff
path: root/math/modPowIterativ.cpp
diff options
context:
space:
mode:
authorPaul Jungeblut <paul.jungeblut@gmail.com>2017-06-26 10:10:25 +0200
committerPaul Jungeblut <paul.jungeblut@gmail.com>2017-06-26 10:10:25 +0200
commit46b25f88e862a320db09e4d964bc9326ab37af78 (patch)
tree03924c4b401b05a9322e611d24fddb9a4d8f813c /math/modPowIterativ.cpp
parentce6597c7defdfbfb04489647d7c4377af0422929 (diff)
Adding iterative version of powMod.
Diffstat (limited to 'math/modPowIterativ.cpp')
-rw-r--r--math/modPowIterativ.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/math/modPowIterativ.cpp b/math/modPowIterativ.cpp
new file mode 100644
index 0000000..f06b4bd
--- /dev/null
+++ b/math/modPowIterativ.cpp
@@ -0,0 +1,11 @@
+// Laufzeit: O(log (b))
+ll powMod(ll a, ll b, ll n) {
+ if (b == 0) return 1;
+ ll res = 1;
+ while (b > 1) {
+ if (b & 1) res = (a * res) % n;
+ a = (a * a) % n;
+ b /= 2;
+ }
+ return (a * res) % n;
+}