https://www.acmicpc.net/problem/1934
1934번: 최소공배수
두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있
www.acmicpc.net
2609와 거의 동일 두 자연수 a b를 비교하여 더 큰수만큼 for문을 반복한다.
a%i 와 b%i 나머지가 둘다 0일때의 i를 모두 곱하면 최대공약수이고,
a=a/i 와 b=b/i 를 해서 더 큰 최대공약수가 나오지 않으면, 그때 a 와 b 와 최대공약수를 곱하면 최소공배수이다.
코드
//1934
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int a,b, test;
cin>> test;
int large;
for(int t=0;t<test;t++){
cin >> a >> b;
int min = 1;
int max = 1;
if(a > b) large = a;
else large = b;
for(int i=2;i <= large;i++){
if((a % i ==0) && (b % i == 0)){
a = a / i;
b = b / i;
min = min * i;
i--;
}
}
max = min * a * b;
cout << max << "\n";
}
return 0;
}
'코딩테스트 연습 > Baekjoon' 카테고리의 다른 글
[Baekjoon] 1978번: 소수 찾기 (C++) (0) | 2022.03.31 |
---|---|
[Baekjoon] 1935번: 후위 표기식2 (c++) (0) | 2022.03.31 |
[Baekjoon] 1929번: 소수 구하기 (c++) (0) | 2022.03.31 |
[Baekjoon] 1874번: 스택 수열 (c++) (0) | 2022.03.31 |
[Baekjoon] 17413번: 단어 뒤집기2 (c++) (0) | 2022.03.31 |