코딩문제/백준

1934 : 최소공배수

Drill_Labito 2020. 7. 13. 00:56

최소공배수 구하는 식을 생각하면 간단한 문제다. (a,b의 최대공약수 * 숫자a * 숫자b)

 

최대공약수 구하는것은, a,b중 작은 수를 기준으로, 변수하나(num)를 만들어서 값을 넣고 반복문 돌리면서, 1씩 빼주면서, 두 수를 각각 num으로 나눈 나머지가 0이면 해당 num이 최대 공약수가 된다. 

 

#include <iostream>
#include <vector>

using namespace std;

int max_num(int a, int b) { //최대공약수
	int num = 0;
	if (a > b) {
		for (int i = b; i > 0; i--) {
			if (a%i == 0 && b%i == 0) return num = i;
		}
	}
	else {
		for (int i = a; i > 0; i--) {
			if (a%i == 0 && b%i == 0) return num = i;
		}
	}
}

int min_num(int a, int b, int c) { //최소공배수
	//c : 최대공약수
	return (a / c) * (b / c) * c;
}

int main() {
	int a, b;
	int n;
	vector<int> tmp;
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> a >> b;
		tmp.push_back(min_num(a,b,max_num(a,b)));
	}
	for (int i = 0; i < n; i++) {
		cout << tmp[i] << endl;
	}
	return 0;
}