본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 1934번: 최소공배수 [C++]

문제 출처: www.acmicpc.net/problem/1934

 

1934번: 최소공배수

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

www.acmicpc.net

1. 코드

#include <iostream>
#include <algorithm>

using namespace std;

int main(void)
{
	int t;
	cin >> t;

	while (t--)
	{
		int n1, n2, low = 1;	//low = 최대공약수
		cin >> n1 >> n2;

		for (int i = 2; i <= min(n1, n2); i++)
		{
			if (n1 % i == 0 && n2 % i == 0)
				low = i;
		}
		cout << n2 / low * n1 << endl;
	}
	return 0;
}

(실행)

2. 풀이

반복문을 이용하여 간단하게 최대공약수를 구하고 최대공약수의 값을 이용해서 최소공배수를 구하면 된다. 최대공약수와 최대 공배수의 관계는 다음과 같다.

최소공배수 = n1 × (n2 ÷ 최대공약수)

식에 맞게 코드를 작성 후 출력해주면 된다.