




'''simple docstring'''




import unittest
from timeit import timeit




def 						snake_case__    ( lowerCamelCase__				:   int			,		lowerCamelCase__				:   int			)   ->   int:
					A_ :     List[Any] =							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 						snake_case__    ( lowerCamelCase__				:   int			,		lowerCamelCase__				:   int			)   ->   int:
					return b if a == 0 else greatest_common_divisor(b % a			,		lowerCamelCase__			)




def 						snake_case__    ( lowerCamelCase__				:   int			,		lowerCamelCase__				:   int			)   ->   int:
					return first_num // greatest_common_divisor(lowerCamelCase__			,		lowerCamelCase__			) * second_num




def 						snake_case__    ( )   ->   Dict:
					A_ :     Optional[int] =							(
					    '''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     UpperCamelCase_     (unittest.TestCase     ):







						"""simple docstring"""


						_lowerCAmelCase    						=					(
						    (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),
						)
						_lowerCAmelCase    						=					(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       _a    (     self      :       Dict    ):





											"""simple docstring"""







											for i, (first_num, second_num) in enumerate(self.test_inputs    ):
																A_ :     List[str] =							least_common_multiple_slow(_lowerCamelCase							, _lowerCamelCase    )
																A_ :     Optional[Any] =							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()









'''simple docstring'''




def 						snake_case__    ( lowerCamelCase__				:   int			)   ->   bool:
					if not isinstance(lowerCamelCase__			,		lowerCamelCase__			):
										A_ :     int =							f'Input value of [number={number}] must be an integer'
										raise TypeError(lowerCamelCase__			)
					if number < 0 or number % 2 == 1:
										return False
					A_ :     Dict =							int(number**0.5			)
					return number == number_sqrt * (number_sqrt + 1)


if __name__ == "__main__":
							import doctest

							doctest.testmod()



