코딩문제/백준
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;
}