Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- #유니티
- solidity
- react
- caverjs
- 불안정 정렬
- 안정 정렬
- javascript
- UTXO
- 텍스트 가운데 정렬
- #1인게임개발
- short-circuiting
- Hybrid Blockchain
- 명시도
- CLI
- NoSQL
- ES6 모듈
- skip ci
- Factory 함수
- Private Blockchain
- 블록체인
- CSS Specificity
- http 모듈
- 2티어 아키텍처
- 3티어 아키텍처
- CSS
- Factory Functions
- npm
- IP
- Relational Database
- SQL
Archives
- Today
- Total
짹뚜 스튜디오
유클리드 호제법 본문
유클리드 호제법은 두 수의 최대공약수를 구할 때 사용하는 알고리즘이다. 일반적으로 두 수의 최대공약수를 구하려면 일단 두 수를 소인수분해한 후 공통된 소수 중 가장 큰 수를 찾으면 된다. 그러나 수가 커질수록 소인수분해하기 어렵기 때문에 유클리드 호제법을 사용하면 쉽고 효율적으로 구할 수 있다.
구현 방법
유클리드 호제법의 개념은 다음과 같다.
두 자연수 a와 b (a > b), 그리고 a를 b로 나눈 나머지 r이 있을 때, a와 b의 최대공약수는 b 와 r의 최대공약수와 같다.
GCD(a, b) = GCD(b, r)
위와 같은 방법을 반복해서 r이 0이 될 때 b가 최대공약수가 된다. 이 알고리즘의 시간복잡도는 O(log N)이 된다.
재귀 함수를 사용하면 쉽게 구현할 수 있다.
//javascript 코드
function GCD(a, b){
if(a % b == 0){
return b;
}
else {
return GCD(b, a%b);
}
}
최소공배수
최대공약수를 구했다면 최소공배수는 다음과 같이 쉽게 계산할 수 있다.
최소공배수 = (a * b) / GCD(a,b)
'개발 공부 > 알고리즘' 카테고리의 다른 글
[정렬 알고리즘] #2. 버블 정렬(Bubble Sort) (0) | 2021.12.13 |
---|---|
[정렬 알고리즘] #1. 안정 정렬 (Stable Sort) VS 불안정 정렬 (Unstable Sort) (0) | 2021.12.10 |
이진 탐색 (Binary Search) (0) | 2021.12.06 |
그리디(탐욕) 알고리즘 (0) | 2021.11.30 |
트리 순회 알고리즘 (0) | 2021.11.28 |
Comments