我写了一个扩展的欧几里得算法函数
xgcd :: FFElem -> FFElem -> (FFElem, FFElem)
也就是说,对于非零有限域元素a,b ∈ GF ( p m ),计算s和t使得sa + tb = 1。有没有一种方法可以xgcd
用来计算域中的乘法逆元?也就是说,给定a ∈ GF( p m ),我想计算b使得ab = 1 ∈ GF( p m )。
我也实现了功能
(+) :: FFElem -> FFElem -> FFElem
(-) :: FFElem -> FFElem -> FFElem
(*) :: FFElem -> FFElem -> FFElem
(^) :: FFElem -> Integer -> FFElem
ffQuotRem :: FFElem -> FFElem -> (FFElem, FFElem)
degree :: FFElem -> Integer
其中(+)
、(-)
、(*)
、(^)
和ffQuotRem
的行为与您预期的一样,并且degree
是有限域的常用欧几里得函数(域元素的多项式表示的次数)。
(答案不一定需要在 Haskell 中。)