반응형
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
- HTML
- javascript
- From
- programmers
- next
- redux-toolkit
- eslint
- MaterialUI
- Prettier
- solution
- 알고리즘
- form
- Collapse
- js
- 폼
- level1
- Javasript
- javscript
- React
- array
- split
- 상호 평가
- component
- algorithm
- 직업군 추천하기
- Weekly Challenge
- nextjs
- Challenge
- Weekly
- 리액트
Archives
- Today
- Total
기록
[Level 1] 최대공약수와 최소공배수 본문
문제
내 풀이
유클리드 호제법
유클리드 호제법(- 互除法, Euclidean Algorithm)은 2개의 자연수 또는 정식(整式)의 최대공약수(Greatest Common Divisor)를 구하는 알고리즘의 하나이다.
호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘을 나타낸다.
2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다.
이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다.
이는 명시적으로 기술된 가장 오래된 알고리즘으로서도 알려져 있으며, 기원전 300년경에 쓰인 유클리드의 《원론》 제7권, 명제 1부터 3까지에 해당한다.
ex)
2, 5 일경우
gcd(5, 2);
5를 2로 나눈 나머지 1
gcd(2, 1);
2 를 1로 나눈 나머지 0
gcd (1, 0)
m === 0 이므로 1 인 n 리턴 최대공약수는 1
최소 공배수 = n * m / 최대 공약수
function solution(n, m) {
const big = n > m ? n : m;
const small = n < m ? n : m;
return [gcd(big, small), n * m / gcd(big, small)];
}
function gcd(n, m) {
if (m == 0) {
return n;
}
return gcd(m, (n % m));
}
츨처
https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[Level1] 제일 작은 수 제거하기 (0) | 2021.07.13 |
---|---|
[Level1] 짝수와 홀수 (0) | 2021.07.13 |
[Level 1] 평균 구하기 (0) | 2021.07.12 |
[Level1] 하샤드 수 (0) | 2021.07.12 |
[Level1] 핸드폰 번호 가리기 (0) | 2021.07.12 |
Comments