jiho_bae
Go devlog
jiho_bae
전체 방문자
오늘
어제
  • 분류 전체보기 (158)
    • JavaScript (38)
      • theory (34)
      • vanilla (4)
    • HTML & CSS (2)
    • Browser (3)
    • CS (6)
      • linux (1)
      • shell (2)
      • compiler (2)
    • DS & Algorithm (87)
      • theory (5)
      • basic (7)
      • programmers (30)
      • baekjoon (45)
    • Design Pattern (2)
    • Error (4)
    • Git & Github (4)
    • Tools (1)
    • 부트캠프 (4)
    • Small Tips (2)
    • Java (3)
    • test (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 리액트 프로젝트 디버깅하기
  • 자바스크립트 이벤트 위임
  • 대충만든자판 javascript
  • 계수정렬 자바스크립트
  • 25632 소수 부르기 게임
  • 가사 검색 자바스크립트
  • safari invalid date error
  • 퀵정렬 자바스크립트
  • 억억단을 외우자 javascript
  • 병합정렬 자바스크립트
  • 자바스크립트 sort는 왜 그모양일까
  • 자바스크립트 비동기 마이크로 태스크 큐와 렌더링 과정
  • 덧칠하기 javascript
  • 자바스크립트 모듈 시스템
  • 13460 javascript nodejs
  • 자바스크립트 커링
  • fetch 취소하기
  • 카카오 코딩테스트 양궁대회 nodeJS
  • 자바스크립트 채팅방 스크롤
  • 1753 최단경로 javascript
  • 프로그래머스 숫자카드나누기 javascript
  • 백준 자바스크립트 입력 템플릿
  • safari Date format NaN
  • 백준 17406 nodeJS
  • javascript use strict
  • JavaScript
  • 외벽 점검 javascript
  • 깃 이전 커밋에서 새 브랜치 만들기
  • 리코쳇 로봇 javascript
  • 자바스크립트 배열의 특수함

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
jiho_bae

Go devlog

DS & Algorithm/basic

[기초 알고리즘] 최대공약수 최소공배수 찾기(유클리드 호제법) - 자바스크립트

2021. 5. 4. 22:56

유클리드 호제법

유클리드 호제법이란, 2개의 자연수의 최대공약수를 구하는 알고리즘 중 하나이다.

 

유클리드 호제법에 의하면 A와 B 두 수의 최대공약수를 구할 때,
A = Bq+r의 식으로 만든 뒤 B와 r의 최대공약수를 구하는 문제로 바꿀 수 있다.
연속되는 B, r의 최대공약수에 대해서도 B = rq+r2 와 같이 재귀가 가능하다.

 

최대공약수는 A,B 모두 나누어 떨어뜨리는 최대의 약수이므로, r=0 일 때 B의 값이 최대공약수이다.

 

최대공약수 구하기

유클리드 호제법을 이용해 최대공약수를 구해보자.

 

반복문 사용하기

function gcd(a,b){ 
  let c = 0; 
  while(b !== 0){ 
    c = a % b; 
    a = b; 
    b = c; 
  } 
  return a; 
}

 

재귀함수로 만들기

function gcd(a,b){ 
  return b ? gcd(b, a%b) : a; 
}

// Arrow function 사용해보기.
const gcd = (a,b) => b ? gcd(b, a%b) : a;

 

최소공배수 구하기

앞서 최대공약수를 구했다면 최소공배수를 구하는 것은 쉽다.

 

(A,B의 최소공배수) = A * B / (A,B의 최대공약수) 로 구할 수 있다.

let lcm = a * b / gcd(a,b);

 

저작자표시

'DS & Algorithm > basic' 카테고리의 다른 글

[기초 알고리즘] 멘토링 - 자바스크립트  (0) 2021.04.18
[기초 알고리즘] 가장 짧은 문자거리 - 자바스크립트  (0) 2021.04.16
[기초 알고리즘] 봉우리 - 자바스크립트  (0) 2021.04.08
[기초 알고리즘] 등수 구하기 - 자바스크립트  (0) 2021.04.08
[기초 알고리즘] 최솟값 구하기 - 자바스크립트  (0) 2021.04.07
    'DS & Algorithm/basic' 카테고리의 다른 글
    • [기초 알고리즘] 멘토링 - 자바스크립트
    • [기초 알고리즘] 가장 짧은 문자거리 - 자바스크립트
    • [기초 알고리즘] 봉우리 - 자바스크립트
    • [기초 알고리즘] 등수 구하기 - 자바스크립트
    jiho_bae
    jiho_bae
    하루에 한 걸음씩

    티스토리툴바