[BOJ][C++] 백준 2609번 최대공약수와 최소공배수

Updated:

2609번 최대공약수와 최소공배수

1. 문제 정보

백준 온라인 저지 [2609번 최대공약수와 최소공배수] 문제의 링크입니다.

문제

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

입력

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

출력

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

예제 입력1

24 18

예제 출력1

6
72

시간 / 메모리 제한

1초 / 128MB


2. 생각

  1. 두 수를 입력받아 두 수의 최대공약수와 최소 공배수를 구하는 문제입니다.
    최대공약수와 최소 공배수의 개념을 프로그래밍으로 옮기면 됩니다.

  2. 먼저, 최대 공약수는 두 수의 약수(대상이 되는 수를 나누어 떨어지게 하는 수)중 최대 값을 구하는 것이므로 약수가 될 후보 i를 입력 받은 두 수중 작은 값까지 증가시키며 i가 두 수를 나누는지 확인합니다.
    마지막에 수정 된 값이 최대 공약수입니다.

  3. 다음으로, 최소 공배수는 두 수의 배수(대상이 되는 수를 곱하여 만들 수 있는 수)중 가장 작은 것을 구하는 것이므로 배수가 될 후보 i를 입력받은 두 수중 작은 값 부터 증가시키며 두 수가 i를 나눌 수 있는지 확인합니다.
    가장 처음에 수정된 값이 최소공배수입니다.


3. 소스코드 (C++)


터미널의 입출력 화면 예제1

2609_1

터미널의 입출력 화면 다른 예제

2609_2 2609_3