-
[2609] 최대공약수와 최소공배수BOJ 2021. 10. 1. 16:30
https://www.acmicpc.net/problem/2609
2609번: 최대공약수와 최소공배수
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
www.acmicpc.net
<문제>
최대공약수는 반복문에서 하향식으로 내려오다, 공약수일때 break하면 됩니다.
또한, 최소공배수는 두 수를 곱하고 최대공약수로 나누면 곧 최대공배수가 됩니다.
입력이 작아 유클리드 알고리즘을 사용하지 않아도 TLE가 발생하지 않습니다.
<소스코드>
12345678910111213#include <stdio.h>#include <algorithm>using namespace std;int main(void) {int i, x, y;scanf("%d %d", &x, &y);for (i = max(x, y); i >= 1; i--) {if (x % i == 0 && y % i == 0) break;}printf("%d\n%d", i, (x * y) / i);return 0;}cs 8라인의 i의 초기값은 min(x,y)로도 작성이 가능합니다.
'BOJ' 카테고리의 다른 글
[9012] 괄호 (0) 2021.10.01 [4344] 평균은 넘겠지 (0) 2021.10.01 [1789] 수들의 합 (0) 2021.10.01 [11659] 구간 합 구하기 4 (0) 2021.09.30 [1963] 소수 경로 (0) 2021.09.30