유클리드 호제법

Eugenius1st·2022년 8월 31일
0

Programmers_JavaScript

목록 보기
25/29
post-thumbnail

유클리드 호제법

유클리드 알고리즘은 2개의 자연수의 최대공약수를 구하는 알고리즘이다.

호제법이란 말은 두 수가 서로 상대방 수를 나누어 결국 원하는 수를 얻는 알고리즘을 나타낸다.

2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b),

a와 b의 최대공약수는 b와 r의 최대공약수와 같다.
이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다.

최대 공약수예시

1071과 1029의 최대공약수를 구하면,

1071은 1029로 나누어 떨어지지 않기 때문에, 1071을 1029로 나눈 나머지를 구한다. ≫ 42
1029는 42로 나누어 떨어지지 않기 때문에, 1029를 42로 나눈 나머지를 구한다. ≫ 21
42는 21로 나누어 떨어진다.
따라서, 최대공약수는 21이다.

78696과 19332의 최대공약수를 구하면,
    78696 = 19332×4 + 1368
    19332 = 1368×14 + 180
     1368 = 180×7 + 108
      180 = 108×1 + 72
      108 = 72×1 + 36
       72 = 36×2 + 0

최소 공배수 = 두 수의 곱 / 최대공약수

코드

 //최소공배수
function gcdlcm(a, b) {
 var gcd = calc_gcd(a, b);
 var lcm = (a * b) / gcd;
 return lcm;
}

 //최대공약수
function calc_gcd(a, b) {
 if (b == 0) return a;
 return a > b ? calc_gcd(b, a % b) : calc_gcd(a, b % a);
}
profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글