問題
a と b の最小公倍数、すなわち両方で割り切れる最小の正の整数を返してください。lcm(a, b) = a / gcd(a, b) × b です。
lcm(a, b) を実装してください。
入力
a: 1つ目の正の整数。 b: 2つ目の正の整数。
出力
lcm(a, b) を返してください。
制約
1 ≤ a, b ≤ 1,000,000,000
例
例 1
入力:
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です。
例 2
入力:
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 つずつ開いてみましょう。
ヒント 1
倍数を探すより、gcdとlcmの関係を使う。
ヒント 2
先にgcdを求めてから、2つの数を慎重に組み合わせる。
ヒント 3
オーバーフローを避けるため、掛ける前に割る。大きい入力でも同様。
目安の計算量
時間 O(log min(a, b))、追加メモリ O(1)
参考資料
この課題はCodeUtility用に調整されています。上記の説明と制約に従ってください。