문제 7 · 실습 — 최소공배수
0을 입력할 때까지 정수를 받아 가장 큰 두 수의 최소공배수를 구합니다. 입력은 12 18 8 0입니다.
cpp
#include <iostream>
using namespace std;
long long gcd(long long a, long long b) {
while (b) { long long t = a % b; a = b; b = t; }
return a;
}
int main() {
long long largest = 0, second = 0, x;
while (cin >> x) {
if (x == 0) break; // 0 이면 입력 종료
if (x > largest) { // 가장 큰 두 수 추적
second = largest;
largest = x;
} else if (x > second) {
second = x;
}
}
long long lcm = largest / gcd(largest, second) * second;
cout << "큰 두 수: " << largest << ", " << second << endl;
cout << "최소공배수: " << lcm << endl;
return 0;
}출력은 다음과 같습니다.
큰 두 수: 18, 12
최소공배수: 36