본문 바로가기
알고리즘, 자료구조/알고리즘

GCD algorithm

by Wordbe 2019. 6. 11.
728x90

 

GCD 알고리즘은 유클리드 호제법(Euclidean algorithm)으로도 불린다.

 

아래와 같은 원리를 이용하여 알고리즘을 짠다.

 

a lemma:

if a, b 가 정수이고 둘다 0이 아니면서

    a = b*q + r을 만족하는 q, r 이 정수이면

then 

    gcd(a, b) = gcd(b, r)

 

 

 

 

 

 

이를 코드에 그대로 옮기면, 최대공약수를 쉽게 구할 수 있다.

최소공배수는 A와 B를 곱하고, gcd(A, B)로 나누어 주면 구할 수 있다.

 

이를 이용하면 백준 문제를 쉽게 풀수있다.

 

 

#include <stdio.h>

int main() {
	int a, b, r;
	scanf("%d %d", &a, &b);
	int A = a;
	int B = b;
	while (b != 0) { r = a % b; a = b; b = r; }
	printf("%d\n", a);
	printf("%d\n", A*B / a);
	return 0;
}

 

 

 

 

 

 

 

728x90

'알고리즘, 자료구조 > 알고리즘' 카테고리의 다른 글

11729 하노이 탑  (719) 2019.06.28
[백트래킹] 1987 알파벳  (979) 2019.06.27
9251 LCS  (0) 2019.06.09
2293 동전 1  (0) 2019.06.09
5639 이진검색트리  (0) 2019.06.08

댓글