📄 bigint.h
字号:
#define BI_MAXLEN 512
#define AUTO 0
#define DEC 10
#define HEX 16
class CBigInt
{
public:
int m_nSign; //记录大数的符号,支持负值运算
int m_nLength; //记录0x10000000进制的位数,0-40之间,相当于2进制的0-1280位
unsigned long m_ulValue[BI_MAXLEN]; //记录每一位的“数字”
CBigInt();
~CBigInt();
//将大数赋值为另一个大数
CBigInt& SetValue(CBigInt& A);
//将大数赋值为编译器能够理解的任何整形常数或变量
CBigInt& SetValue(unsigned __int64 A);
//比较两个大数大小
int Compare(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);
//将输入的10进制或16进制字符串转换成大数
int InPutFromStr(CString& str, const unsigned int system=AUTO);
//将大数按10进制或16进制格式输出到字符串
int OutPutToStr(CString& str, const unsigned int system=DEC);
//欧几里德算法求:Y=X.Euc(A),使满足:YX mod A = 1
CBigInt Euc(CBigInt& A);
//蒙哥马利算法求:Y=X.Mon(A,B),使满足:X^A mod B = Y
CBigInt Mon(CBigInt& A, CBigInt& B);
// CBigInt& operator = (const unsigned __int64 A);
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -