📄 bigint.h
字号:
#define BI_MAXLEN 40
#define DEC 10
#define HEX 16
class CBigInt
{
public:
int m_nSign; //记录大数的符号,支持负值运算
int m_nLength; //记录2^(32)进制的位数,0-40位之间,相当于2进制的0-1280位
unsigned long m_ulValue[BI_MAXLEN]; //记录每一位的"数字"
CBigInt();
~CBigInt();
//基本操作与运算
CBigInt& Mov(CBigInt& A); //将大数赋值为另一个大数
CBigInt& Mov(unsigned __int64 A); //将大数赋值为任何整形常数或变量
int Cmp(CBigInt& A); //比较两个大数大小
CBigInt Add(CBigInt& A); //计算两个大数的和
CBigInt Add(long A); //重载函数,以支持大数与普通整数相加
CBigInt Sub(CBigInt& A); //计算两个大数的差
CBigInt Sub(long A); //重载函数,以支持大数与普通整数相减
CBigInt Mul(CBigInt& A); //计算两个大数的积
CBigInt Mul(long A); //重载函数,以支持大数与普通整数相乘
CBigInt Div(CBigInt& A); //计算两个大数的商
CBigInt Div(long A); //重载函数,以支持大数与普通整数相除
CBigInt Mod(CBigInt& A); //计算两个大数相除的余数
long Mod(long A); //重载函数,以支持大数与普通整数相除求模
//输入输出
int InPutFromStr(CString& str, const unsigned int system); //将输入的10进制或16进制字符串转换成大数
int OutPutToStr(CString& str, const unsigned int system); //将大数按10进制或16进制格式输出到字符串
//欧几里德算法求:Y=X.Euc(A),使满足:(Y*X) mod A = 1
CBigInt Euc(CBigInt& A);
//蒙哥马利算法求:Y=X.Mon(A,B),使满足:X^A mod B = Y
CBigInt Mon(CBigInt& A, CBigInt& B);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -