Develop & CS/Algorithm & Data Structure

[C 언어] 유클리드 호제법 증명과 재귀함수 구현

2022. 4. 26. 17:11
반응형

유클리드 호제법에 관해서 한 번 글을 썼어야 하는데 이제야 써 보네요.

 

유클리드 호제법은 최대공약수(GCD : Greatest Common Factor)을 구하는 알고리즘입니다.

여담으로 최소공배수는 (두 수의 곱/gcd)를 하면 되기 때문에, 따로 구할 필요가 없고

 

세 수의 최대공약수를 구한다 해도 gcd(gcd(a,b),c)를 하면 되므로 두 수의 최대공약수를 구하는 알고리즘에 대해서만 알아도 충분할 겁니다.

 

 

우선 위의 사진에서 최대공약수를 구하는 알고리즘을 이해할 수 있고,

이는 단순히 r = a%b 에 대해서 gcd(a,b) = gcd(b,r)임을 보이면 됩니다.

 

 

증명은 위와 같습니다.

 

그래서 gcd함수 부분을 코드로 구현하면

 

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

 

이와 같은데, 저는 재귀가 보기도 편해서 이렇게 구현해서 사용합니다.

 

확장된 유클리드 알고리즘이라는 것도 있는데 이는 부정방정식의 해를 구할 때 사용합니다. 고등학생 때 확장된 유클리드 알고리즘으로 일차 선형 부정방정식을 게산하는걸 만들었는데 이젠 기억이 안 나네요..

 

감사합니다.

반응형
'Develop & CS/Algorithm & Data Structure' 카테고리의 다른 글
  • [C] 에라토스테네스의 체, 소수 구하기
  • [C 언어] 두 번째로 큰(작은) 수를 구하기
  • 퀵 정렬(Quick Sort) C 언어
  • [Programming] 최소 신장 트리 알고리즘 정리
그믐​
그믐​
그믐​
neutrinox4b1
그믐​
전체
오늘
어제
  • 분류 전체보기 (288)
    • Write up (Wargame) (121)
      • Pwnable (60)
      • Reversing (0)
      • Web Hacking (8)
      • Forensic (1)
      • Cryptography (6)
      • LOB (10)
      • misc (0)
      • SF pwnable 기초 (10)
      • SF pwnable 심화 (1)
      • LOS (25)
    • Security (73)
      • 시스템 해킹(PWN, System) (21)
      • 리버싱(Reverse Engineering) (1)
      • 포렌식(Forensic) (3)
      • 암호학(Cryptography) (44)
      • 네트워크(Network) (1)
      • 임베디드(Emebedded) (0)
    • Develop & CS (38)
      • Algorithm & Data Structure (6)
      • Baekjoon (11)
      • C, C++ (8)
      • Python (2)
      • R (1)
      • etc (8)
    • 프로젝트(Project) (7)
      • 시간표&급식 파싱 (1)
      • 남방진동지수 (1)
      • 네트워크 해킹 (5)
    • Daily life (44)
      • My Book (10)
      • Book Review (1)
      • IT Review (1)
      • 일상 팁 (19)
      • 네트워크관리사 (2)
      • 근황 (11)
    • 수학&과학(Mathematics & Science.. (4)

인기 글

공지사항

  • Wargame, CTF별 검색 키워드 정리
hELLO · Designed By 정상우.
그믐​
[C 언어] 유클리드 호제법 증명과 재귀함수 구현
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.