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));
}
'알고리즘 문제' 카테고리의 다른 글
[C/C++ 백준 11053번] 가장 긴 증가하는 부분수열 (Silver 2) (0) | 2020.08.10 |
---|---|
[C/C++ 백준 2751번] 수 정렬하기 (Silver 5) (0) | 2020.08.10 |
[C/C++ 백준 2164번] 카드2 (Silver 4) (0) | 2020.08.09 |
[C/C++ 백준 2036번] 수열의 점수 (Silver 1) (0) | 2020.08.07 |
[C/C++ 백준 1461번] 도서관 (Silver 1) (0) | 2020.08.04 |