'''simple docstring'''


import unittest
from timeit import timeit


def    _lowerCamelCase       ( lowerCamelCase_   :				int      ,	lowerCamelCase_   :				int  ):



     """simple docstring"""





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


def    _lowerCamelCase       ( lowerCamelCase_   :				int      ,	lowerCamelCase_   :				int  ):



     """simple docstring"""





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


def    _lowerCamelCase       ( lowerCamelCase_   :				int      ,	lowerCamelCase_   :				int  ):



     """simple docstring"""





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


def    _lowerCamelCase       ( ):



     """simple docstring"""





     UpperCAmelCase_				:  str  = (
         'from __main__ import least_common_multiple_slow, least_common_multiple_fast'
     )
     print(
         'least_common_multiple_slow():'      ,	timeit('least_common_multiple_slow(1000, 999)'      ,	setup=_SCREAMING_SNAKE_CASE  )      ,	)
     print(
         'least_common_multiple_fast():'      ,	timeit('least_common_multiple_fast(1000, 999)'      ,	setup=_SCREAMING_SNAKE_CASE  )      ,	)






class 	__SCREAMING_SNAKE_CASE		(			unittest.TestCase			):







  '''simple docstring'''






  lowerCamelCase_						:Any		       =						(
      (10, 20),
      (13, 15),
      (4, 31),
      (10, 42),
      (43, 34),
      (5, 12),
      (12, 25),
      (10, 25),
      (6, 9),
  )
  lowerCamelCase_						:Union[str, Any]		       =						(20, 195, 124, 210, 1462, 60, 300, 50, 18)


  def _UpperCamelCase	(					self		):




       '''simple docstring'''

       for i, (first_num, second_num) in enumerate(self.test_inputs		):
            UpperCAmelCase_				:  List[str]  = least_common_multiple_slow(_lowerCAmelCase ,						_lowerCAmelCase		)
            UpperCAmelCase_				:  List[str]  = least_common_multiple_fast(_lowerCAmelCase ,						_lowerCAmelCase		)
            with self.subTest(i=_lowerCAmelCase		):
                 self.assertEqual(_lowerCAmelCase ,						self.expected_results[i]		)
                 self.assertEqual(_lowerCAmelCase ,						self.expected_results[i]		)


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











import math
def 				UpperCAmelCase__		(					_SCREAMING_SNAKE_CASE :						int					)->bool:

      if 1 < number < 4:
            # 2 and 3 are primes
            return True
      elif number < 2 or number % 2 == 0 or number % 3 == 0:
            # Negatives, 0, 1, all even numbers, all multiples of 3 are not primes
            return False

      # All primes number are in format of 6k +/- 1
      for i in range(5  ,					int(math.sqrt(_SCREAMING_SNAKE_CASE					) + 1					)  ,					6					):
            if number % i == 0 or number % (i + 2) == 0:
                  return False
      return True
def 				UpperCAmelCase__		(					_SCREAMING_SNAKE_CASE :						int = 6_0_0_8_5_1_4_7_5_1_4_3					)->int:

      try:
            _lowerCAmelCase			      =	int(_SCREAMING_SNAKE_CASE					)
      except (TypeError, ValueError):
            raise TypeError('''Parameter n must be int or castable to int.'''					)
      if n <= 0:
            raise ValueError('''Parameter n must be greater than or equal to one.'''					)
      _lowerCAmelCase			      =	0
      if is_prime(_SCREAMING_SNAKE_CASE					):
            return n
      while n % 2 == 0:
            n //= 2
      if is_prime(_SCREAMING_SNAKE_CASE					):
            return n
      for i in range(3  ,					int(math.sqrt(_SCREAMING_SNAKE_CASE					)					) + 1  ,					2					):
            if n % i == 0:
                  if is_prime(n // i					):
                        _lowerCAmelCase			      =	n // i
                        break
                  elif is_prime(_SCREAMING_SNAKE_CASE					):
                        _lowerCAmelCase			      =	i
      return max_number


if __name__ == "__main__":
    print(F"""{solution() = }""")