Euclidean algorithm - 유클리드 호제법

2023. 2. 1. 18:31·Tips & theory
728x90
반응형

서론

크.... 내가 유클리드 호제법에 대해서 포스팅하는 날이 올줄이야...

상상도 못했다 ㅋㅋㅋ

 

이론

임의의 두 정수가 있을 때 두 정수의 최대공약수를 구하는 방법 중 하나가 유클리드 호제법이다.

여기서 최대공약수는 Greatest Common Divisor이며, 보통 GCD라고 이야기한다.

 

이를 간단히 식으로 표현해보면

a mod b = r = GCD(a, b) = GCD(b, r)

이다.

 

이론 자체는 매우 쉽다.

증명하기가 어려워서 그렇지... ㅋㅋ

 

방식은 아래와 같다.

 

임의의 정수 a와 b가 a > b라고 가정하자.

이 때 b로 a를 나눈 나머지를 r1이라고 하자.

이 r1으로 다시 b를 나누고 이 나머지를 r2라고 하자.

이 r2로 다시 r1을 나누고...

이렇게 나눠 나머지가 0이 될때까지 반복하면 r(n-1)이 최대공약수가 된다.

 

이를 다시 수식으로 표현하면

a mod b = r1

b mod r1 = r2

r1 mod r2 = r3

...

r(n-1) mod r(n) = 0

r(n-1) = GCD

가 된다.

 

소스코드

이를 간단히 파이썬으로 구현해보면 아래와 같다.

 

a = int(input())
b = int(input())

if a < b:
    a,b = b,a

while 1:
    r = a % b
    if r == 0:
        GCD = b
        break
    a,b = b,r

print('GCD = ', GCD)

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Tips & theory' 카테고리의 다른 글

항등원과 역원, 그리고 합동식  (0) 2023.02.03
Expanded Euclid's Algorithm - 확장된 유클리드 호제법  (0) 2023.02.02
Diffie–Hellman key exchange 이론 및 중간자 공격  (2) 2023.01.30
command injection  (2) 2023.01.25
libc database. local에서 사용해보자.  (0) 2023.01.07
'Tips & theory' 카테고리의 다른 글
  • 항등원과 역원, 그리고 합동식
  • Expanded Euclid's Algorithm - 확장된 유클리드 호제법
  • Diffie–Hellman key exchange 이론 및 중간자 공격
  • command injection
wyv3rn
wyv3rn
아저씨의 흔한 취미. wyv3rn#1249
  • wyv3rn
    think storage
    wyv3rn
  • 전체
    오늘
    어제
    • 분류 전체보기 (493) N
      • To do list (6)
        • Doing (0)
        • Complete (6)
      • Diary (35)
      • Tips & theory (77)
      • Kernel Exploit (22)
      • Wargame (313) N
        • pwn.college (34)
        • Dreamhack (148) N
        • pwnable.kr (15)
        • Lord of Sqlinjection (3)
        • Cryptohack (20)
        • Root me (27)
        • CodeEngn (4)
        • Exploit Education (22)
        • ROP Emporium (8)
        • H4C (10)
        • Hackerchool (22)
      • CTF (40) N
        • Solved (38) N
        • Unsolved (2)
      • Script (0)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

    • PWN wargame 모음 (및 느낀점)
    • 비공개 글들에 대해.
    • 뭐라도 하나 얻어가시길...
  • 인기 글

  • 태그

    phoenix
    Buffer Overflow
    libc
    64bit
    la ctf
    FSB
    docker
    cryptohack
    pwntools
    rop
    root-me
    _IO_FILE
    CANARY
    lob
    RTL
    BOF
    dreamhack
    heap
    exploit education
    hackerschool
    root
    pwnable.kr
    x64
    vtable
    ROOT ME
    Format String Bug
    32bit
    Me
    tcache
    x86
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.3
wyv3rn
Euclidean algorithm - 유클리드 호제법
상단으로

티스토리툴바