GCD
Euclidean algorithm
일명: 유클리드 호제법
결론: 2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지 를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다.
- 호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘
78696 = 19332×4 + 1368
19332 = 1368×14 + 180
1368 = 180×7 + 108
180 = 108×1 + 72
108 = 72×1 + 36
72 = 36×2 + 0
#;; 최대 공약수 = 36
def compute_hcf(x, y):
while(y):
x, y = y, x % y
print(x, y)
return x
a = 66528
b = 52920
print(compute_hcf(a, b))
EGCD
def egcd(a, b):
x,y, u,v = 0,1, 1,0
while a != 0:
q, r = b//a, b%a
m, n = x-u*q, y-v*q
b,a, x,y, u,v = a,r, u,v, m,n
gcd = b
return gcd, x, y
print egcd(26513,32321)
>.?.<
'Crypto' 카테고리의 다른 글
페르마의 작은 정리(Fermat’s Little Theorem (0) | 2023.02.18 |
---|---|
정수론에서의 모듈러 연산 (0) | 2023.02.18 |