Modular Exponentiation
#역원을 구하기 위한 알고리즘 def extended_gcd(a, b): #초기 설정을 위한 초기화 r1, r2 = a, b s1, s2 = 1, 0 t1, t2 = 0, 1 while(r2 > 0): q = r1 // r2 r = r1 - q * r2 #q는 r2로 r1을 나눈 몫, r은 그 나머지 r1, r2 = r2, r #r1은 r2로, r2는 r로 초기화 s = s1 - q * s2 #q는 s2로 s1을 나눈 몫, s는 그 나머지 s1, s2 = s2, s #s1은 s2로 s2는 s로 초기화 t = t1 - q * t2 #q는 t2로 t1을 나눈 몫, t은 그 나머지 t1, t2 = t2, t #t1은 t2로 t2는 t로 초기화 return s1 #a*y1 = 1 mod b이므로 s1을 반환 #..
2022. 4. 23.