본문 바로가기

알고리즘 문제

[C/C++ 백준 2609번] 최대공약수와 최소공배수 (Silver 5)

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

 

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

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

www.acmicpc.net

최소공배수는 두 수를 곱한 뒤 최대공약수로 나누면 구할 수 있다.

최대공약수는 유클리드 알고리즘을 통해 구하자.

 

#include <cstdio>
int uclid(int a, int b){
	int temp;
	if(b>a){
		temp = b;
		b = a;
		a = temp;
	}
	while(a%b){
		int n = a%b;
		a = b;
		b = n;	
	}
	return b;
}
int main(void){
	int a, b;
	scanf("%d %d",&a,&b);
	printf("%d\n%d",uclid(a, b),a*b/uclid(a, b));
}