책에서는 아래와 같이 음수를 거듭제곱하면 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)
책에서는 아래와 같이 음수를 거듭제곱하면 pow 메서드에서 오류가 발생한다고 했는데, 로컬에서 테스트했을 때 에러가 발생안한다(
Python 3.8.9
)Q)
exponent
나머지 연산을self.prime
로 안하고self.prime-1
로 해야하는 이유?12 가 맞으니까 prime-1 이 맞는거 같은데 수학적으로 표현을 못하겠음