sanhaa
sanha story
sanhaa
전체 방문자
오늘
어제
  • 분류 전체보기 (93)
    • 일상 (3)
    • Programming (42)
      • Back-end Language (32)
      • Front-end Language (8)
      • Database Language (2)
    • Etc. (35)
      • Coding Test (23)
      • Algorithm (7)
      • Data structure (1)
      • IDE (1)
      • Job Preparation (3)
    • Project (3)
    • Engineer Information Proces.. (10)
    • secret space (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • oEmebed
  • 신고받기
  • 프로그래머스
  • 스택
  • 주몽의명령
  • 자바
  • connection reset by peer
  • DML #정처기 #시나공 #SQL #MYSQL #SPRING #JAVA
  • DDL #SQL #DB #정보처리기사 #SQL응용 #MySQL
  • 삼발자 #일상
  • spring #java #k6 #
  • DFS #백준
  • 연속된 자연수의 합 구하기
  • Java
  • 큐
  • JAVA #백준 #구간합
  • 백준
  • 백준 2018번
  • hash #java #프로그래머스 #코딩테세트 #백준
  • 투 포인트 알고리즘
  • 정보처리기사 #정처기 #기출 #2021기출
  • 알고리즘
  • 시간복잡도 #JAVA #코딩테스트
  • JAVA 구간 합 구하기
  • 코딩테스트
  • 1253번
  • iterator #
  • 사이드 프로젝트 #여기로모여라 #web socket #실시간 위치공유
  • Spring
  • 정처기 #DCL #SQL #DB

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
sanhaa

sanha story

유클리드 호제법(Euclidean Algorithm)
Etc./Algorithm

유클리드 호제법(Euclidean Algorithm)

2022. 6. 28. 16:16

유클리드 호제법

유클리드 호제법은 두 수의 최대 공약수를 구하는 알고리즘이다. 일반적으로 최대 공약수를 구하는 방법은 소인수분해를 이용한 고통된 소수둘의 곱으로 표현할 수 있지만 유클리드 호제법은 좀 더 간단한 방법을 제시한다.

 

핵심이론

유클리드 호제법을 수행하려면 MOD연산을 이해하고 있어야 한다. 

연산 기능 예제
MOD 두 값을 나눈 나머지를 구하는 연산 10 MOD 4 = 2 

 

MOD 연산으로 구현하는 유클리드 호제법

1) 큰수를 작은수로 나누는 MOD 연산을 수행한다.

2) 앞 단계에서의 작은 수와 MOD 연산 결괏값으로 MOD연산을 수행한다.

3) 나머지가 0이 되는 순간의 작은 수를 최대 공약수로 선택한다.

 

 

손으로 풀어보기

 

코드로 구현하기

 

	 public int Euclidean(int N, int M){
        //초기화
        int [] list = new int[2];
        //N,M 비교하여 값 넣어주기 오름차순
        if(N<M){list[0]=N;list[1]=M;}
        else{list[0]=M;list[1]=N;}
        
        int r = list[1]%list[0];
        list[1]=list[0];
        list[0]=r;
        if(list[0]!=0){
           return Euclidean(list[0],list[1]);}
        return list[1];
    }

더 좋은 코드

 public static int gcd(int a, int b){
        if(b==0) return a;
        return gcd(b, a%b);
    }

활용 문제

 

[백준] 1934번 최소 공배수 구하기

문제설명 더보기 문제 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공

san-tiger.tistory.com

 

저작자표시 비영리 변경금지 (새창열림)

'Etc. > Algorithm' 카테고리의 다른 글

에라토스테네스(Eratosthenes)의 체  (0) 2022.06.26
[알고리즘] 슬라이딩 윈도우(sliding window) 알고리즘 이란?  (0) 2022.05.12
[알고리즘] Two Pointers 알고리즘이란?  (0) 2022.05.10
[알고리즘]Prefix sum 알고리즘이란?  (0) 2022.05.09
[알고리즘] Time Complexity(시간 복잡도) 알아보기  (0) 2022.05.08
    'Etc./Algorithm' 카테고리의 다른 글
    • 에라토스테네스(Eratosthenes)의 체
    • [알고리즘] 슬라이딩 윈도우(sliding window) 알고리즘 이란?
    • [알고리즘] Two Pointers 알고리즘이란?
    • [알고리즘]Prefix sum 알고리즘이란?
    sanhaa
    sanhaa
    sanha history book

    티스토리툴바