C언어

백준 2609번 / 1934번 최소공배수 최대공약수 문제

mcdn 2020. 8. 19. 14:47
반응형

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

 

1934번: 최소공배수

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

www.acmicpc.net

예제 입력 1 복사

3 1 45000 6 10 13 17

예제 출력 1 복사

45000 30 221

#include <iostream>
using namespace std;

int gcd(int a, int b) // greatest common divisor
{
	int div = (a < b) ? a : b;
	while (div >= 1)
	{
		if (a % div == 0 && b % div == 0)
			return div;
		div--;
	}
	return div;
}

int scm(int a, int b) // smallest common multiple
{
	int stnd = gcd(a, b);
	int mul = stnd * (a / stnd) * (b / stnd);
	return mul;
}
int main(void)
{
	int n;
	cin >> n;
	int a, b;
	for (int i = 0; i < n; i++)
	{
		cin >> a >> b;
		cout << scm(a, b) << "\n";
	}
}

 

반응형