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 |