Верните наименьшее общее кратное a и b — наименьшее положительное число, на которое делятся оба числа. lcm(a, b) = a / gcd(a, b) × b.
Реализуйте функцию lcm(a, b).
Ввод
a: Первое положительное число. b: Второе положительное число.
Вывод
Верните lcm(a, b).
Ограничения
1 ≤ a, b ≤ 1 000 000 000
Примеры
Ввод:
a = 4
b = 6
Ожидаемый вывод:
expected = 12
Ввод:
long long a = 4;
long long b = 6;
Ожидаемый вывод:
long long expected = 12;
Ввод:
long a = 4;
long b = 6;
Ожидаемый вывод:
long expected = 12;
Пояснение
Кратные 4: 4, 8, 12…; кратные 6: 6, 12…; первое общее — 12.
Ввод:
a = 7
b = 7
Ожидаемый вывод:
expected = 7
Ввод:
long long a = 7;
long long b = 7;
Ожидаемый вывод:
long long expected = 7;
Ввод:
long a = 7;
long b = 7;
Ожидаемый вывод:
long expected = 7;
Пояснение
НОК числа с самим собой — это само число: 7.
Как подступиться
Сначала попробуйте сами, затем открывайте подсказки по одной.
Подсказка 1
Используйте связь между gcd и lcm вместо поиска кратных.
Подсказка 2
Сначала найдите gcd, затем аккуратно объедините два числа.
Подсказка 3
Сначала делите, потом умножайте, чтобы снизить риск переполнения даже на больших входах.
Ожидаемая сложность
время O(log min(a, b)), доп. память O(1)
Ссылки
Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.