본문 바로가기

알고리즘 풀이

백준 2609번 최대공약수 최소공배수

https://www.acmicpc.net/problem/2609


최대공약수와 최소공배수 구하기이다. 방법은 2가지가 있다.


1. 유클리드 호제법(여러 사이트에 많이 나와있으며, 아래 코드가 그 방법)

2. 최대공약수

    - 입력받은 m, n 중 작은 수(minimum)를 -1씩 감소시키며, m 과 n을 minimum으로 나누었을 때 0이 되는 수를 출력


    최소공배수

    - 입력받은 m, n 중 큰 수(maximum)를 1씩 증가시키며, maximum 을 m 과 n으로 나누었을 때 0이 되는 수를 출력


#include <iostream>
using namespace std;
int getGcd(int m, int n) {
if (n == 0) { return m; }
return getGcd(n, m % n);
}
int getGcm(int m, int n, int gcd) {
return m * n / gcd;
}
int main()
{
int m, n, gcd, gcm;
scanf("%d %d", &m, &n);
if (m < n) {
int temp = m;
m = n;
n = temp;
}
gcd = getGcd(m, n);
gcm = getGcm(m, n, gcd);
printf("%d\n%d", gcd, gcm);
return 0;
}


'알고리즘 풀이' 카테고리의 다른 글

백준 2294번 동전2  (0) 2018.01.08
백준 2667번 단지번호붙이기  (0) 2018.01.05
백준 3187번 양치기 꿍  (0) 2017.12.27
백준 11650번 좌표 정렬하기  (0) 2017.12.22
나는 왜 코딩을 못할까  (0) 2017.12.21