Algorithms_in_C++  1.0.0
Set of algorithms implemented in C++.
modular_exponentiation.cpp File Reference

C++ Program for Modular Exponentiation Iteratively. More...

#include <cassert>
#include <iostream>
Include dependency graph for modular_exponentiation.cpp:

Namespaces

 math
 for std::vector
 

Functions

uint64_t math::power (uint64_t a, uint64_t b, uint64_t c)
 This function calculates a raised to exponent b under modulo c using modular exponentiation. More...
 
static void test ()
 
int main ()
 Main function. More...
 

Detailed Description

C++ Program for Modular Exponentiation Iteratively.

The task is to calculate the value of an integer a raised to an integer exponent b under modulo c.

Note
The time complexity of this approach is O(log b).

Example: (4^3) % 5 (where ^ stands for exponentiation and % for modulo) (4*4*4) % 5 (4 % 5) * ( (4*4) % 5 ) 4 * (16 % 5) 4 * 1 4 We can also verify the result as 4^3 is 64 and 64 modulo 5 is 4

Author
Shri2206

Function Documentation

◆ main()

int main ( void  )

Main function.

Returns
0 on exit
86  {
87  test(); // execute the tests
88  return 0;
89 }
static void test()
Definition: modular_exponentiation.cpp:60
Here is the call graph for this function:

◆ test()

static void test ( )
static

Function for testing power function. test cases and assert statement.

Returns
void
60  {
61  uint32_t test_case_1 = math::power(2, 5, 13);
62  assert(test_case_1 == 6);
63  std::cout << "Test 1 Passed!" << std::endl;
64 
65  uint32_t test_case_2 = math::power(14, 7, 15);
66  assert(test_case_2 == 14);
67  std::cout << "Test 2 Passed!" << std::endl;
68 
69  uint64_t test_case_3 = math::power(8, 15, 41);
70  assert(test_case_3 == 32);
71  std::cout << "Test 3 Passed!" << std::endl;
72 
73  uint64_t test_case_4 = math::power(27, 2, 5);
74  assert(test_case_4 == 4);
75  std::cout << "Test 4 Passed!" << std::endl;
76 
77  uint16_t test_case_5 = math::power(7, 3, 6);
78  assert(test_case_5 == 1);
79  std::cout << "Test 5 Passed!" << std::endl;
80 }
T endl(T... args)
uint64_t power(uint64_t a, uint64_t b, uint64_t c)
This function calculates a raised to exponent b under modulo c using modular exponentiation.
Definition: modular_exponentiation.cpp:35
Here is the call graph for this function: