yangbongsoo / blockStudy

1 stars 0 forks source link

1.8 거듭제곱 메서드 수정 #6

Closed yangbongsoo closed 1 year ago

yangbongsoo commented 2 years ago

책에서는 아래와 같이 음수를 거듭제곱하면 pow 메서드에서 오류가 발생한다고 했는데, 로컬에서 테스트했을 때 에러가 발생안한다(Python 3.8.9)

a = FieldElement(7, 13)
b = FieldElement(8, 13)
print(a ** -3 == b)

Q) exponent 나머지 연산을 self.prime 로 안하고 self.prime-1 로 해야하는 이유?

def __pow__(self, exponent):
    n = exponent % (self.prime - 1)
    num = pow(self.num, n, self.prime)  # 매 곱셈 단계에서 나머지연산으로 값의 크기를 줄이기 때문에 더 효율적
    return self.__class__(num, self.prime)
  1. prime 은 13
  2. $7^{-3}$ 을 예로들면, 공식에 의해 $7^{13-4=9}$ 가 된다.
  3. -3%12=9 다.

12 가 맞으니까 prime-1 이 맞는거 같은데 수학적으로 표현을 못하겠음