-失败,1-成功。
N. 大数的乘法
gChar gMul(gBigInt *a, gBigInt *b);//乘
功能:对大数a和大数b进行乘法运算,考虑它们的符号。
参数:
a:传入一个大数,传出相乘的结果。
b:传入另一个大数。
返回值:0-失败,1-成功。
gChar gMulInt(gBigInt *a, gSInt b);
功能:对大数a和整数b进行乘法运算,考虑它们的符号。
参数:
a:传入一个大数,传出相乘的结果。
b:传入一个一般整数。
返回值:0-失败,1-成功。
O. 大数的除法
gChar gDiv(gBigInt *a, gBigInt *b);//除
功能:对大数a和大数b进行除法运算,考虑它们的符号。
参数:
a:传入一个大数,传出相除的结果。
b:传入另一个大数。
返回值:0-失败,1-成功。
gChar gDivInt(gBigInt *a, gSInt b);
功能:对大数a和整数b进行除法运算,考虑它们的符号。
参数:
a:传入一个大数,传出相除的结果。
b:传入一个一般整数。
返回值:0-失败,1-成功。
P. 大数的取余
gChar gMod(gBigInt *a, gBigInt *b);//取余
功能:对大数a和大数b进行取余运算,考虑它们的符号。
参数:
a:传入一个大数,传出取余的结果。
b:传入另一个大数。
返回值:0-失败,1-成功。
gChar gModInt(gBigInt *a, gSInt b);
功能:对大数a和整数b进行取余运算,考虑它们的符号。
参数:
a:传入一个大数,传出取余的结果。
b:传入一个一般整数。
返回值:0-失败,1-成功。
Q. 欧几里德算法
gChar gEuc(gBigInt *a,gBigInt *b);//欧几里德算法
功能:对大数a和大数b执行欧几里德算法,结果放到a中。即用辗转相除的思想,求满足aX≡1 MOD b的X的值,也即求满足aX-bY=1的较小的大数X和Y的值。
其中用到了递归的思想,运算后,大数a和大数b,都改变了。
参数:
a:传入一个大数,传出满足aX-bY=1的X的值。
b:传入另一个大数,传出满足aX-bY=1的Y的值
返回值:0-失败,1-成功。
R. 蒙格马利算法
gChar gMon(gBigInt *a, gBigInt *b, gBigInt *c);//蒙格马利算法
功能:对大数a,大数b和大数c执行蒙格马利算法,结果放到a中。
即用指数降阶的思想,求算式a^b MOD c的值。至于降阶的原理,请参考相关书籍。
参数:
a:传入一个大数,传出运算的结果。
b:传入另一个大数。
c:传入第三个大数。
返回值:0-失败,1-成功。
S. 最大公约数
gChar gGcd(gBigInt *a, gBigInt *b);//最大公约数
功能:用辗转相除法,求大数a和大数b的最大公约数。
参数:
a:传入一个大数,传出a和b的最大公约数
b:传入另一个大数。
返回值:0-失败,1-成功。
摘自 脉凌网络
|