
'''simple docstring'''
import unittest
from timeit import timeit

def   UpperCamelCase_       (		__SCREAMING_SNAKE_CASE,						__SCREAMING_SNAKE_CASE    ):
    """simple docstring"""






    snake_case_	:      Optional[Any]            =  first_num if first_num >= second_num else second_num
    snake_case_	:      Tuple            =  max_num
    while (common_mult % first_num > 0) or (common_mult % second_num > 0):
        common_mult += max_num
    return common_mult

def   UpperCamelCase_       (		__SCREAMING_SNAKE_CASE,						__SCREAMING_SNAKE_CASE    ):
    """simple docstring"""






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

def   UpperCamelCase_       (		__SCREAMING_SNAKE_CASE,						__SCREAMING_SNAKE_CASE    ):
    """simple docstring"""






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

def   UpperCamelCase_       (		):
    """simple docstring"""






    snake_case_	:      Any            =  (
        "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 				UpperCAmelCase_			(		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     snake_case__						(      self):
     for i, (first_num, second_num) in enumerate(self.test_inputs):
         snake_case_	:      List[str]            =  least_common_multiple_slow(lowercase_	,    lowercase_)
         snake_case_	:      Union[str, Any]            =  least_common_multiple_fast(lowercase_	,    lowercase_)
         with self.subTest(i=lowercase_):
             self.assertEqual(lowercase_	,    self.expected_results[i])
             self.assertEqual(lowercase_	,    self.expected_results[i])


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






'''simple docstring'''
from __future__ import annotations

from typing import Any






class 				UpperCAmelCase_			:





 def __init__(      self	,    lowercase_	,    lowercase_):  # noqa: A002
     snake_case_	:      List[str]            =  item
     snake_case_	:      Dict            =  next






class 				UpperCAmelCase_			:





 def __init__(      self):
     snake_case_	:      Node | None            =  None
     snake_case_	:      List[str]            =  0





 def     snake_case__						(      self	,    lowercase_):
     snake_case_	:      List[Any]            =  Node(lowercase_	,    self.head)
     self.size += 1





 def     snake_case__						(      self):
     # Switched 'self.is_empty()' to 'self.head is None'
     # because mypy was considering the possibility that 'self.head'
     # can be None in below else part and giving error
     if self.head is None:
         return None
     else:
         snake_case_	:      List[Any]            =  self.head.item
         snake_case_	:      Any            =  self.head.next
         self.size -= 1
         return item





 def     snake_case__						(      self):
     return self.head is None





 def __str__(      self):
     if self.is_empty():
         return ""
     else:
         snake_case_	:      Dict            =  self.head
         snake_case_	:      Optional[Any]            =  ""
         snake_case_	:      list[str]            =  []
         while iterate:
             item_list.append(str(iterate.item))
             snake_case_	:      List[str]            =  iterate.next

         snake_case_	:      Optional[Any]            =  " --> ".join(lowercase_)

         return item_str





 def __len__(      self):
     return self.size




