


'''simple docstring'''







import unittest
from timeit import timeit






def    lowerCAmelCase__ (       lowerCamelCase  :    int						,lowerCamelCase  :    int     ):
       _A  :			str											=      first_num if first_num >= second_num else second_num
       _A  :			str											=      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     ):
       return b if a == 0 else greatest_common_divisor(b % a						,lowerCamelCase     )






def    lowerCAmelCase__ (       lowerCamelCase  :    int						,lowerCamelCase  :    int     ):
       return first_num // greatest_common_divisor(lowerCamelCase						,lowerCamelCase     ) * second_num






def    lowerCAmelCase__ (       ):
       _A  :			List[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=lowerCamelCase     )						,)
       print(
           'least_common_multiple_fast():'						,timeit('least_common_multiple_fast(1000, 999)'						,setup=lowerCamelCase     )						,)


class 				__lowerCamelCase				( unittest.TestCase ):
    """simple docstring"""
    a									=					(
        (10, 20),
        (13, 15),
        (4, 31),
        (10, 42),
        (43, 34),
        (5, 12),
        (12, 25),
        (10, 25),
        (6, 9),
    )
    a									=					(20, 195, 124, 210, 1462, 60, 300, 50, 18)


    def      A					(						self    :							Optional[int]):
           for i, (first_num, second_num) in enumerate(self.test_inputs):
                  _A  :			Optional[Any]											=      least_common_multiple_slow(SCREAMING_SNAKE_CASE   ,							SCREAMING_SNAKE_CASE)
                  _A  :			List[str]											=      least_common_multiple_fast(SCREAMING_SNAKE_CASE   ,							SCREAMING_SNAKE_CASE)
                  with self.subTest(i=SCREAMING_SNAKE_CASE):
                         self.assertEqual(SCREAMING_SNAKE_CASE   ,							self.expected_results[i])
                         self.assertEqual(SCREAMING_SNAKE_CASE   ,							self.expected_results[i])


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










'''simple docstring'''







A   :  Optional[Any]       		=				{
    '''0000''': '''0''',
    '''0001''': '''1''',
    '''0010''': '''2''',
    '''0011''': '''3''',
    '''0100''': '''4''',
    '''0101''': '''5''',
    '''0110''': '''6''',
    '''0111''': '''7''',
    '''1000''': '''8''',
    '''1001''': '''9''',
    '''1010''': '''a''',
    '''1011''': '''b''',
    '''1100''': '''c''',
    '''1101''': '''d''',
    '''1110''': '''e''',
    '''1111''': '''f''',
}






def    lowerCAmelCase__ (       lowerCamelCase  :    str     ):
       _A  :			Union[str, Any]											=      str(lowerCamelCase     ).strip()

       # Exceptions
       if not binary_str:
              raise ValueError('Empty string was passed to the function'     )
       _A  :			Any											=      binary_str[0] == '-'
       _A  :			str											=      binary_str[1:] if is_negative else binary_str
       if not all(char in '01' for char in binary_str     ):
              raise ValueError('Non-binary value was passed to the function'     )

       _A  :			Optional[Any]											=      (
           '0' * (4 * (divmod(len(lowerCamelCase     )						,4     )[0] + 1) - len(lowerCamelCase     )) + binary_str
       )

       _A  :			Optional[int]											=      []
       for x in range(0						,len(lowerCamelCase     )						,4     ):
              hexadecimal.append(BITS_TO_HEX[binary_str[x : x + 4]]     )
       _A  :			int											=      '0x' + ''.join(lowerCamelCase     )

       return "-" + hexadecimal_str if is_negative else hexadecimal_str


if __name__ == "__main__":
   from doctest import testmod

   testmod()






