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 |
Tags
- NeuralNetwork
- 알고리즘
- mysql
- 캡스톤정리
- Docker
- 그래프
- Blockchain
- C++
- sigmoid
- 풀이
- 탐색
- ios
- 그리디
- 프로그래머스
- Swift
- Greedy
- 실버쥐
- 백준
- 부르트포스
- Algorithm
- 백트래킹
- BFS
- DeepLearning
- ReLU
- Stack
- 플로이드와샬
- dp
- 문제풀이
- dfs
- Node.js
Archives
- Today
- Total
개발아 담하자
[Algorithm] 유클리드 호제법 이란? 본문
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이다.
source code
int gcd(int a, int b)
{
int c;
while (b != 0)
{
c = a % b;
a = b;
b = c;
}
return a;
}
최소 공배수 구하기
int lcm(int a, int b){
return a*b / gcd(a,b);
}
🔥 풀어보면 좋은 알고리즘 문제 👇
https://programmers.co.kr/learn/courses/30/lessons/12953
'🌟 자료구조+알고리즘' 카테고리의 다른 글
[Algorithm] 유전 알고리즘이란? (Genetic Algorithm) (0) | 2020.06.08 |
---|---|
[Algorithm] 그리디 알고리즘이란? (활동 선택 문제, 분할 가능 배낭 문제) (0) | 2020.03.30 |
[Algorithhm] 에라토스테네스의 체 알고리즘이란? (0) | 2020.03.10 |
[Algorithm] DFS / BFS 알고리즘 구현하기 (0) | 2020.03.05 |
[Algorithm] 플로이드 와샬 알고리즘 (0) | 2020.02.02 |