일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링에러
- spring
- pagination
- String
- offset
- MySQL시작하기
- minikube
- springMVC
- restful api
- K8S
- Postman
- DB생성
- intellij
- NullPointerException
- CloutNative
- windows10
- MySQL
- frontend
- 이클립스
- wappalyzer
- Java
- appleM1
- SQL
- Lombok
- gradle
- MYSQL에러
- 우분투에war배포
- VUE
- SpringBoot
- Seek_Keyset
- Today
- Total
미운 오리 새끼의 우아한 개발자되기
[알고리즘] 유클리드 호제법 in Java (최대공약수, 최소공배수) 본문
1. 최대공약수를 구하는 유클리드 호제법
유클리드 호제법(Euclidean algorithm) 또는 유클리드 알고리즘은 2개의 자연수 또는 정식의 최대공약수(the greatest common denominator, GCD)를 구하는 알고리즘의 하나이다. 호제법이란 말은 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 나타낸다.
2개의 자연수(또는 정식) a,b에 대해서 a를 b로 나눈 나머지를 r이라 하면 (단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다.
이 성질에 따라 b를 r로 나눈 나머지 r' 를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다.
이는 명시적으로 기술된 가장 오래된 알고리즘으로서도 알려져 있으며, 기원전 300년경에 쓰인 《원론》 제7권, 명제 1부터 3까지에 해당한다. 아니....기원전 300년....?????대박사건....
2. 소스코드 in Java
public static int gcd(int p, int q) {
if(q == 0) return p;
return gcd(q, p%q);
}
3. 최소공배수 공식
p, q 두 수의 최소공배수(the least commin multiple, LCM)를 구하는 공식은
p*q/gcd(p, q)
https://programmers.co.kr/learn/courses/30/lessons/12940
최대공약수와 최소공배수 문제를 풀다가 알게된 알고리즘.
기원전 300년 경에 쓰였다니...놀라울 따름이다....
코딩테스트 연습 - 최대공약수와 최소공배수
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의
programmers.co.kr
'Algorithm' 카테고리의 다른 글
[정렬 #3] 퀵 정렬(Quick Sort) w.Java (0) | 2022.01.25 |
---|---|
[정렬 #2] 합병 정렬(Merge Sort) w.Java (0) | 2022.01.25 |
[정렬 #1] 삽입 정렬(Insertion Sort) w. Java (0) | 2022.01.25 |