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 |
Tags
- udemy
- coursera
- 시퀄
- BST
- 백준
- Advanced SQL
- ML
- BFS
- 데이터베이스
- self join
- 개발
- AVLTree
- 너비우선탐색
- nullif
- 자료구조
- Machine Learning
- postgresql
- CREATE TABLE
- timestamp
- Andrew Ng
- 최소공배수
- 깊이우선탐색
- 유데미
- COALESCE
- sql
- C++
- 과제
- 최대공약수
- pgadmin
- 알고리즘
Archives
- Today
- Total
승1's B(log n)
[알고리즘] 최소공배수와 최대공약수 구하기 본문
최대공배수(Least Common Multiple)를 구하기 위해서는 우선 최대공약수(Great Common Divisior를 구하는 법에 대해서 알 필요가 있다.
1) 최대공약수 구하기
최대공약수를 구하는 법은 유클리드 호제법을 이용하면 된다.
유클리드 호제법은 a와 b의 최대공약수를 구할 때 사용이 되는데, a와 b의 최대공약수는 b와 a를 b로 나눈 나머지의 최대공약수와 같다는 공식이다.
이를 코드로 표현해보면
int GCD(int a, int b){
if(a % b == 0)
return b;
else
return GCD(b, a % b);
}
이렇게 나타낼 수 있다.
2) 최소공배수 구하기
최대공약수를 구했다면 최소공배수를 구하는 일은 식은 죽 먹기다.
마찬가지로 유클리도 호제법에 의하면 최소공배수는 두 수의 곱 나누기 두 수의 최대공약수이다.
a * b / GCD(a, b)
이것도 코드로 표현해보자면
int LCM(int a, int b){
return a * b / GCD(a, b);
}
이렇게 나타낼 수 있다.
까먹지 말고 기억하자!!!
'Data Structures & Algorithms' 카테고리의 다른 글
[알고리즘] DFS & BFS 깊이우선탐색과 너비우선탐색 (0) | 2022.08.22 |
---|---|
[자료구조 - C++] Assignment 4 Search Tree 구현하기 (0) | 2022.07.10 |
[자료구조 - C++] Assignment 3 Hash Map을 통해 단어 빈도수 확인 기능 구현하기 (0) | 2022.07.01 |
[자료구조 - C++] Assignment 2 Doubly Linked List를 응용한 간단한 문서편집기 만들기 (0) | 2022.06.24 |
[자료구조 - C++] Assignment 1 다항식 계산기 만들기 (0) | 2022.06.23 |
Comments