

import unittest
from timeit import timeit







def       snake_case__    (       lowerCAmelCase_,   lowerCAmelCase_      ):





     """simple docstring"""







     SCREAMING_SNAKE_CASE										=       first_num if first_num >= second_num else second_num
     SCREAMING_SNAKE_CASE										=       max_num
     while (common_mult % first_num > 0) or (common_mult % second_num > 0):
          common_mult += max_num
     return common_mult







def       snake_case__    (       lowerCAmelCase_,   lowerCAmelCase_      ):





     """simple docstring"""







     return b if a == 0 else greatest_common_divisor(b % a,   lowerCAmelCase_      )







def       snake_case__    (       lowerCAmelCase_,   lowerCAmelCase_      ):





     """simple docstring"""







     return first_num // greatest_common_divisor(lowerCAmelCase_,   lowerCAmelCase_      ) * second_num







def       snake_case__    (       ):





     """simple docstring"""







     SCREAMING_SNAKE_CASE										=       (
         'from __main__ import least_common_multiple_slow, least_common_multiple_fast'
     )
     print(
         'least_common_multiple_slow():',   timeit('least_common_multiple_slow(1000, 999)',   setup=lowerCAmelCase_      ),   )
     print(
         'least_common_multiple_fast():',   timeit('least_common_multiple_fast(1000, 999)',   setup=lowerCAmelCase_      ),   )



class 		a_	(							unittest.TestCase					):



      """simple docstring"""







      __UpperCAmelCase      		=				(
          (10, 20),
          (13, 15),
          (4, 31),
          (10, 42),
          (43, 34),
          (5, 12),
          (12, 25),
          (10, 25),
          (6, 9),
      )
      __UpperCAmelCase      		=				(20, 195, 124, 210, 1_462, 60, 300, 50, 18)
      def 	_lowerCAmelCase					(				self					:							Any    ):
           for i, (first_num, second_num) in enumerate(self.test_inputs    ):
                SCREAMING_SNAKE_CASE										=       least_common_multiple_slow(snake_case      ,snake_case    )
                SCREAMING_SNAKE_CASE										=       least_common_multiple_fast(snake_case      ,snake_case    )
                with self.subTest(i=snake_case    ):
                     self.assertEqual(snake_case      ,self.expected_results[i]    )
                     self.assertEqual(snake_case      ,self.expected_results[i]    )


if __name__ == "__main__":
 benchmark()
 unittest.main()




def       snake_case__    (       lowerCAmelCase_,   lowerCAmelCase_,   lowerCAmelCase_      ):





     """simple docstring"""







     if power < 0:
          return -1
     base %= mod
     SCREAMING_SNAKE_CASE										=1

     while power > 0:
          if power & 1:
               SCREAMING_SNAKE_CASE										=(result * base) % mod
          SCREAMING_SNAKE_CASE										=power >> 1
          SCREAMING_SNAKE_CASE										=(base * base) % mod

     return result







def       snake_case__    (       ):





     """simple docstring"""







     print(modular_exponential(3,   200,   13      )      )


if __name__ == "__main__":
 import doctest

 doctest.testmod()

 main()

