728x90
시간 제한 : 1 초
메모리 제한 : 128 MB
문제
두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.
출력
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를,둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
소스코드
#include <iostream> using namespace std; int gcd(int n, int m) { return m ? gcd(m, n%m) : n; } int lcm(int n, int m, int g) { return (n / g)*(m / g)*g; } int main(void) { int n, m, g; cin >> n >> m; if (n < m) { int tmp = n; n = m; m = tmp; } g = gcd(n, m); cout << g << endl << lcm(n, m, g); }
728x90
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준 알고리즘] 1874 : 스택 수열 (0) | 2017.08.17 |
---|---|
백준 알고리즘] 2610 : 회의준비(KOI 2004 지역본선) (0) | 2017.08.15 |
백준 알고리즘] 2608 : 로마 숫자(KOI 2004 지역본선) (0) | 2017.08.11 |
백준 알고리즘] 2606 : 바이러스(KOI 2004 지역본선) (0) | 2017.08.10 |
백준 알고리즘] 2605 : 줄 세우기(KOI 2004 지역본선) (0) | 2017.08.07 |