Algorithm

유클리드 호제법(최대공약수, 최소공배수 구하기 연습문제)

수오니니 2022. 5. 11. 17:46

유클리드 호제법 

 

두개의 수로 최대공약수를 구하는 알고리즘

두 정수를 같은 수로 나누어 가며 최대 공약수를 셈하는 방법 

호제 : 서로 나누다 

 

int A , int B 가 존재할 때,

A를 B로 나눈 나머지를 r 이라 정의(단, A>B)

A와 B의 최대공약수(GCD)는 B와 r의 GCD와 같다는 논리를 이용해 계속 나눗셈을 연산하여 r == 0 일때, 나누는 수가 GCD가 된다.

 

A % B = r

42 % 24 = 18(나머지)

24 % 18 = 6

18 % 6 = 0

r == 0 일때, 나누는 수(B) == 6, 즉 6이 최대공약수(GCD)이다.

 

최소공배수(LCM) = (A / GCD) * (B / GCD) = A * B / GCD

 

 

유클리드 호제법을 이용한 최소공배수와 최대공약수 구하기 연습문제

 

이렇게 간단하게도 푸는 사람들을 보면 대단하다. 바로 생각이 날 정도로 문법에 익숙한 사람들이라 생각된다.