[BAEKJOON - C++] 2609번 : 최대공약수와 최소공배수

정다은·2023년 7월 2일
0

BAEKJOON

목록 보기
12/54
C++ 배우기 (51~100) 이 문제집을 참고하여 문제를 풀었습니다.

2023년 1월 ~ 2월에 프로그래밍을 공부하기 위해 풀었던 문제들이다.

🍑문제

두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.

입력
첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.

출력
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.

🍑대략적인 틀

  • 첫째줄에 두개의 자연수를 입력받음(10000이하)
  • 첫째줄에는 최대공약수
    • 둘중에 더 작은 수를 골라 2부터 그 수로 큰수와 작은수를 모두 나누어 (for문) 공약수를 구함
  • 둘째줄에는 최소공배수 출력
    • 최대공약수의 배수 중 두 수에게 모두 나뉘는 아이가 최소 공배수인가
    • 이것도 맞지만 구글링 해보니 두 수를 곱한것이 최대공약수와 최소공배수의 합이라 하니 최대공약수를 구한 다음 두 수를 곱한것을 나누어 구하면 되겠다.

🍑 작성한 코드

// 최대공약수와 최소공배수

#include <iostream>
using namespace std;

int main() {
	int a, b, gcd = 1, lcm = 0;
	cin >> a >> b;

	int min = a > b ? b : a;

	for (int i = 2; i <= min; i++) {
		if (a % i == 0 && b % i == 0)
			gcd = i;
	}
	lcm = (a * b) / gcd;

	cout << gcd << '\n' << lcm;
}
profile
보안 공부하는 대학교 3학년 / 시리즈에서 더욱 편하게 글을 찾아보실 수 있습니다:)

0개의 댓글