일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Realm
- 프로그래머스
- DependencyInjection
- 명품cppProgramming c++
- leetcode
- RaceCondition
- data_structure
- SeSAC
- 청년취업사관학교
- 오픈채팅방
- MainScheduler.asyncInstance
- MethodSwilzzling
- baseviewcontroller
- rxswift
- GCD
- MainScheduler.Instance
- 등굣길
- swift
- cleanarchitecture
- combine
- MainScheduler
- SwiftUI
- DiffableDataSource
- IOS
- 코테
- DispatchQueue
- CoreBluetooth
- DynamicMemberLookup
- SRP
- gitflow
- Today
- Total
Do.
최대공약수와 최소공배수 본문
코테 단골 손님 이기도 한 최대공약수와 최소공배수 구하는 법
최대공약수는 유클리드 호제법을 통해서 구하는게 코딩이 훨씬 쉬운 것 같다.
최대공약수
유클리드 호제법을 통한 최대공약수 구하는 법은 간단한데
https://ko.wikipedia.org/wiki/%EC%B5%9C%EB%8C%80%EA%B3%B5%EC%95%BD%EC%88%98
n1과 n2의 최대공약수를 유클리드 호제법을 통해 구한다고 가정
n1은 192, n2는 72일 때
1. 192를 72로 나눈 나머지를 구한다.
2. 72를 1에서 나온 나머지로 나누어 나온 나머지를 구한다.
3. 1에서 나온 나머지를 2에서 나온 나머지로 나눈 나머지를 구한다.
4. 위 과정을 나머지가 0이 나올때 까지 반복하고 0이 나왔을 때 나누었던 값이 최대공약수가 된다.
이를 코드로 보면
1.n1을 n2로 나눈 나머지를 구한다.
2.n2를 이제 다시 n1으로 보고 나머지를 n2로 본다. 를 반복하는 것이기 때문에
이런 심플한 재귀함수로 구현할 수 있다.
최소공배수
최소공배수는 최대공약수를 구하면 정말 간단하게 구할 수 있는데
최소공배수는 원래 각 수의 소인수 분해를 통해 각각 지수가 가장 큰 수를 곱하면 되는데
각 수의 소인수 분해를 하는 것보다 유클리드 호제법을 통해 최대공약수를 구하는게 빠르다.

구글에 최소공배수라고 검색하면 나오는 위키 썸네일?로
n1 * n2 를 n1, n2의 최대공약수로 나누면 나온다고 되어있다.
따라서 코드로 보자면
끝.
'Algorithm' 카테고리의 다른 글
2019 KAKAO BLIND RECRUITMENT - 오픈 채팅방, Swift (0) | 2022.03.13 |
---|---|
2020 KAKAO BLIND RECRUITMET - 문자열 압축, Swift (0) | 2022.03.12 |
Ring Buffer를 이용한 Queue 자료구조 구현, Swift (0) | 2022.02.09 |
Swift - Stack 구현하기 (0) | 2022.02.09 |
LeetCode - Binary Tree Level Order Traversal (0) | 2022.02.09 |