본문 바로가기

Algorithm

(C++) - 백준(BOJ) 1934번 : 최소공배수

반응형

https://www.acmicpc.net/problem/1934

 

1934번: 최소공배수

두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있

www.acmicpc.net

 

최소공배수를 구하는 문제였습니다.

 

 

📕 풀이방법

1. 두 수의 최대공약수를 구합니다. 이 값을 GCD라고 정의합니다.

 

2. LCM = A / GCD * B / GCD * GCD의 공식이 성립합니다. 이를 구해 출력합니다.


 

 

📕 Code

#include <iostream>
using namespace std;
int GCD(int a,int b)
{
    
    if (b > a)
        return GCD(b,a);
    if (b == 0)
        return a;
    return GCD(b, a%b);
}
int main() {
    int A, B, T, gcd;
    cin >> T;
    for (int i = 0; i < T; i++)
    {
        cin >> A >> B;
        gcd = GCD(A, B);
        if (GCD(A, B) == 1)//최대공약수가 1이라면
            cout << A*B << '\n';
        else
        
            cout << gcd * (A / gcd) * (B / gcd) << '\n';
    }
}