
"""simple docstring"""




import unittest
from timeit import timeit




def     a						(							snake_case__: int						,       snake_case__: int ):


				'''simple docstring'''
				lowercase_					  = first_num if first_num >= second_num else second_num
				lowercase_					  = max_num
				while (common_mult % first_num > 0) or (common_mult % second_num > 0):
								common_mult += max_num
				return common_mult




def     a						(							snake_case__: int						,       snake_case__: int ):


				'''simple docstring'''
				return b if a == 0 else greatest_common_divisor(b % a						,       snake_case__ )




def     a						(							snake_case__: int						,       snake_case__: int ):


				'''simple docstring'''
				return first_num // greatest_common_divisor(snake_case__						,       snake_case__ ) * second_num




def     a						(							):


				'''simple docstring'''
				lowercase_					  = (
				    '''from __main__ import least_common_multiple_slow, least_common_multiple_fast'''
				)
				print(
				    '''least_common_multiple_slow():'''						,       timeit('''least_common_multiple_slow(1000, 999)'''						,       setup=snake_case__ )						,       )
				print(
				    '''least_common_multiple_fast():'''						,       timeit('''least_common_multiple_fast(1000, 999)'''						,       setup=snake_case__ )						,       )
class 			lowercase__(    unittest.TestCase							):



	"""simple docstring"""




	a      :Optional[Any]   					=     (
	    (10, 20),
	    (13, 15),
	    (4, 31),
	    (10, 42),
	    (43, 34),
	    (5, 12),
	    (12, 25),
	    (10, 25),
	    (6, 9),
	)
	a      :Optional[Any]   					=     (20, 195, 124, 210, 1_462, 60, 300, 50, 18)
	def 						_lowercase  (	self  :      Any	)	->					Union[str, Any]:
					for i, (first_num, second_num) in enumerate(self.test_inputs	):
									lowercase_					  = least_common_multiple_slow(SCREAMING_SNAKE_CASE_	,							SCREAMING_SNAKE_CASE_	)
									lowercase_					  = 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()






class 			lowercase__:



	"""simple docstring"""




	def __init__(	self  :      str	)	->					None:
					lowercase_					  = [0, 1]




	def 						_lowercase  (	self  :      str	,							SCREAMING_SNAKE_CASE_  :      int	)	->					list:
					if (difference := index - (len(self.sequence	) - 2)) >= 1:
									for _ in range(SCREAMING_SNAKE_CASE_	):
													self.sequence.append(self.sequence[-1] + self.sequence[-2]	)
					return self.sequence[:index]




def     a						(							):


				'''simple docstring'''
				print(
				    '''Fibonacci Series Using Dynamic Programming\n'''						,       '''Enter the index of the Fibonacci number you want to calculate '''						,       '''in the prompt below. (To exit enter exit or Ctrl-C)\n'''						,       sep=''''''						,       )
				lowercase_					  = Fibonacci()

				while True:
								lowercase_					  = input('''>> ''' )
								if prompt in {"exit", "quit"}:
												break

								try:
												lowercase_					  = int(snake_case__ )
								except ValueError:
												print('''Enter a number or \'exit\'''' )
												continue

								print(fibonacci.get(snake_case__ ) )


if __name__ == "__main__":
						main()




