参数:
p:待检测的随机大数。
返回值:0-可能是素数,其它-为能整除p的小素数或1.
E. Rabin-Miller检测
gChar gRabinMillerTest(gBigInt *p,int tNum);
功能:用Rabin-Miller算法,对大数p进行tNum次检测,判断p是否可能为素数。
参数:
p:待检测的随机大数。
tNum:检测的次数,它可以决定该检测的可信度。
返回值:0-失败或通不过,1-成功并通过,说明p可能是素数。
F. 随机产生大素数
gChar gGeneratePrime(gBigInt *p);
功能:随机生成一个大素数。
参数:
p:随机生成的大素数。
返回值:0-失败,1-成功。
G. 顺序搜索大素数
gChar gGeneratePrimeEx(gBigInt *p, int flg);
功能:根据标志flg,递增或递减地搜索p附近的大素数。
参数:
p:搜索到的大素数。
Flg:方向标志,g_INCREASE-递增,g_DECREASE-递减。
返回值:0-失败,1-成功。
H. 字符串与大数的转换
gChar gStr2BigInt(gBigInt *gbi,char *str,int flg);
功能:根据标志flg,将表示成10进制或16进制形式的字符串str转换成大数gbi.
参数:
gbi:转换成的大数。
Str:待转换的字符串。
Flg:标志,OCT_FLG-8进制,DEC_FLG-10进制,HEX_FLG-16进制。
返回值:0-失败,1-成功。
gChar gBigInt2Str(char *str,gBigInt *gbi,int flg);
功能:根据标志flg,将大数gbi转换成10进制或16进制形式表示的字符串str.
参数:
Str:转换成的字符串。
gbi:待转换的大数。
Flg:标志,OCT_FLG-8进制,DEC_FLG-10进制,HEX_FLG-16进制。
返回值:0-失败,1-成功。
I. 一般整数的乘除
gUInt gIntMul(gUInt *a, gUInt b);
功能:一般整数的乘法。在函数内部,对整数a和b进行扩展,然后与b相乘,把结果放在a中返回,进位作为返回值。
参数:
a:传入一个整数,传出相乘的结果。
b:传入一个整数,作乘数。
返回值:两个整数相乘的进位。失败时,返回0.
gUInt gIntDiv(gUInt *ah, gUInt *al, gUInt b);
功能:一般整数的除法。在函数内部,将整数ah和al合并成一个扩展了的整数,然后除以整数b,把结果的高位放到ah中,低位放到al中返回,余数作为返回值。
参数:
ah:传入一个整数,作为被除数的高位;传出相除后的结果的高位。
al:传入一个整数,作为被除数的低位;传出相除后的结果的低位。
b:传入一个整数,作除数。
返回值:相除的余数。失败时,返回0.
J. 大数的比较
gChar gCmp(gBigInt *a, gBigInt *b);
功能:对大数a和大数b进行比较,不考虑它们的符号,只比较数值。
参数:
a:传入一个大数。
b:传入另一个大数。
返回值:-1-大数a小于大数b,0-大数a等于大数b,+1-大数a大于大数b.
gChar gCmpEx(gBigInt *a, gBigInt *b);
功能:对大数a和大数b进行比较,考虑它们的符号,整数大于负数。
参数:
a:传入一个大数。
b:传入另一个大数。
返回值:-1-大数a小于大数b,0-大数a等于大数b,+1-大数a大于大数b.
gChar gCmpInt(gBigInt *a, gUInt b);
功能:大数与整数的比较。对大数a和一般整数b进行比较,不考虑它们的符号。
参数:
a:传入一个大数。
b:传入一个一般整数。
返回值:-1-大数a小于b,0-大数a等于b,+1-大数a大于b.
K. 大数的赋值
gChar gMov(gBigInt *a, gBigInt *b);
功能:将大数b的值,赋给大数a,考虑它们的符号。
参数:
a:传出赋值的结果。
b:传入另一个大数。
返回值:0-失败,1-成功。
gChar gMovInt(gBigInt *a, gUInt b);
功能:将整数b的值,赋给大数a,考虑它们的符号。
参数:
a:传出赋值的结果。
b:传入一个一般整数。
返回值:0-失败,1-成功。
L. 大数的加法
gChar gAdd(gBigInt *a, gBigInt *b);//加
功能:对大数a和大数b进行加法运算,考虑它们的符号。
参数:
a:传入一个大数,传出相加的结果。
b:传入另一个大数。
返回值:0-失败,1-成功。
gChar gAddInt(gBigInt *a, gSInt b);
功能:对大数a和整数b进行加法运算,考虑它们的符号。
参数:
a:传入一个大数,传出相加的结果。
b:传入一个一般整数。
返回值:0-失败,1-成功。
M. 大数的减法
gChar gSub(gBigInt *a, gBigInt *b);//减
功能:对大数a和大数b进行减法运算,考虑它们的符号。
参数:
a:传入一个大数,传出相减的结果。
b:传入另一个大数。
返回值:0-失败,1-成功。
gChar gSubInt(gBigInt *a, gSInt b);
功能:对大数a和整数b进行减法运算,考虑它们的符号。
参数:
a:传入一个大数,传出相减的结果。
b:传入一个一般整数。
返回值:0 |