






import unittest
from timeit import timeit
def        a_	( _A ,				_A					)     ->     int:







				"""simple docstring"""
				snake_case__													=       first_num if first_num >= second_num else second_num
				snake_case__													=       max_num
				while (common_mult % first_num > 0) or (common_mult % second_num > 0):
								common_mult += max_num
				return common_mult
def        a_	( _A ,				_A					)     ->     int:







				"""simple docstring"""
				return b if a == 0 else greatest_common_divisor(b % a ,				_A					)
def        a_	( _A ,				_A					)     ->     int:







				"""simple docstring"""
				return first_num // greatest_common_divisor(_A ,				_A					) * second_num
def        a_	( )     ->     List[Any]:







				"""simple docstring"""
				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=_A					) ,				)
				print(
				    'least_common_multiple_fast():' ,				timeit('least_common_multiple_fast(1000, 999)' ,				setup=_A					) ,				)


class 					__SCREAMING_SNAKE_CASE(		unittest.TestCase		):
							_UpperCAmelCase	      =    (
							    (1_0, 2_0),
							    (1_3, 1_5),
							    (4, 3_1),
							    (1_0, 4_2),
							    (4_3, 3_4),
							    (5, 1_2),
							    (1_2, 2_5),
							    (1_0, 2_5),
							    (6, 9),
							)
							_UpperCAmelCase	      =    (2_0, 1_9_5, 1_2_4, 2_1_0, 1_4_6_2, 6_0, 3_0_0, 5_0, 1_8)
							def lowerCAmelCase_	(       self: List[str]  )						->						Any:
											for i, (first_num, second_num) in enumerate(self.test_inputs  ):
															snake_case__													=       least_common_multiple_slow(UpperCamelCase    ,		UpperCamelCase  )
															snake_case__													=       least_common_multiple_fast(UpperCamelCase    ,		UpperCamelCase  )
															with self.subTest(i=UpperCamelCase  ):
																			self.assertEqual(UpperCamelCase    ,		self.expected_results[i]  )
																			self.assertEqual(UpperCamelCase    ,		self.expected_results[i]  )


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












def        a_	( _A ,				_A					)     ->     Union[str, Any]:







				"""simple docstring"""
				snake_case__													=       1
				while b > 0:
								if b & 1:
												res *= a

								a *= a
								b >>= 1

				return res
def        a_	( _A ,				_A ,				_A					)     ->     Dict:







				"""simple docstring"""
				snake_case__													=       1
				while b > 0:
								if b & 1:
												snake_case__													=       ((res % c) * (a % c)) % c

								a *= a
								b >>= 1

				return res




