코딩테스트 연습/Baekjoon
[Baekjoon] 2609번: 최대공약수와 최소공배수 (c++)
수기
2022. 3. 31. 19:59
https://www.acmicpc.net/problem/2609
2609번: 최대공약수와 최소공배수
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
www.acmicpc.net
두 자연수 a b를 비교하여 더 큰수만큼 for문을 반복한다.
a%i 와 b%i 나머지가 둘다 0일때의 i를 모두 곱하면 최대공약수이고,
a=a/i 와 b=b/i 를 해서 더 큰 최대공약수가 나오지 않으면, 그때 a 와 b 와 최대공약수를 곱하면 최소공배수이다.
코드
//2609
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int a,b;
cin >> a >> b;
int large;
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 << min << "\n" << max;
return 0;
}