miracl中有许多可以求乘法逆元的函数,在这里主要介绍函数xgcd()
1.函数介绍
2.涵盖内容
3.注意事项
一、xgcd:
函数原型:
int xgcd(x,y,xd,yd,z)
big x,y,xd,yd,z;
在大数库中,xgcd的计算公式是:
On exit z=gcd(x,y)=x.xd+y.yd
我一直百思不得其解,为什么这个函数可以用来计算模逆,直到发现了:拓展的欧几里得算法:
欧几里得算法是什么?
扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式: ax+by = gcd(a, b)
=d(解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。拓展的欧几里得算法其实又叫做辗转相除法,其实辗转相除法主要用来计算最大公因子,那么为什么可以计算乘法逆元呢?
回答如下: 如果gcd(a,b)=d,则存在m,n,使得d = ma + nb,称呼这种关系为a、b组合整数d,m,n称为组合系数。
当d=1时,有 ma + nb = 1 ,此时就可以看出m是a模b的乘法逆元,n是b模a的乘法逆元。
*
二、核心思想
摘记:
1)我们首先从欧几里得算法学起,欧几里得告诉我们gcd(a,b)=gcd