용어 설명
최대공약수 (Greatest Common Divisor) : 공통된 약수 중 가장 큰 수
최소공배수 (Least Common Multiple) : 공통된 배수 중 가장 작은 수
유클리드 호제법 : 두 수가 서로 상대방의 수를 나누어서 결국 원하는 수를 얻는 알고리즘
최대공약수(GCD) 구하기 (JavaScript)
2개의 자연수 a, b(a > b)에 대해서, a를 b로 나눈 나머지가 r일 때, a와 b의 최대공약수는 b와 r의 최대공약수와 같다
// 최대 공약수를 구하는 함수 (유클리드 호제법: Euclidean algorithm)
function gcd(m, n) {
if (m % n === 0) return n;
return gcd(n, m % n);
}
gcd(m,n) // m과 n의 최대공약수
최소공배수(LCM) 구하기 (JavaScript)
2개의 자연수 a, b(a > b)에 대해서, a와 b의 곱은 최대공약수와 최소공배수의 곱과 같다
a * b = GCD * LCM
LCM = (a * b) / GCD
// 최대 공약수를 구하는 함수 (유클리드 호제법: Euclidean algorithm)
function gcd(m, n) {
if (m % n === 0) return n;
return gcd(n, m % n);
}
(m * n) / gcd(m, n) // m과 n의 최소공배수
반응형
'프로그래밍 > 알고리즘, 프로그래밍 언어' 카테고리의 다른 글
[알고리즘] BFS/DFS (JavaScript) (0) | 2021.09.30 |
---|---|
[알고리즘] GCD를 이용하여 과자를 공평하게 분배하기 (0) | 2021.08.23 |
[알고리즘] 인접 리스트(adjacency list) 자료구조- JavaScript (0) | 2021.08.23 |
[알고리즘] 조합(Combination)으로 배열의 요소 뽑기 (JavaScript) (0) | 2021.08.19 |
[알고리즘] 순열(permutation)로 뽑은 모든 배열 구하기 (JavaScript) (0) | 2021.08.18 |
댓글