?? bigint.h
字號:
// BigInt.h: interface for the CBigInt class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_BIGINT_H__E0A91F42_DF86_11D6_B0C1_00E04C391A51__INCLUDED_)
#define AFX_BIGINT_H__E0A91F42_DF86_11D6_B0C1_00E04C391A51__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//////////////////////////////////////////////////////////////////////
#define BI_MAXLEN 1200
#define BI_BASE 16
//////////////////////////////////////////////////////////////////////
struct bigint
{
char bit[BI_MAXLEN];//低位對應低位,高位對應高位
UINT len; //大數長度
};
typedef struct bigint BigInt;
//////////////////////////////////////////////////////////////////////
//大數算法庫(class CBigInt)
class CBigInt
{
public:
CBigInt();
// 以下代碼作者:0200935 王俊川
bool IsPrime(BigInt &P);//檢查P是否為大素數
bool GetPrime(BigInt &P,UINT len);//獲取隨機大素數
bool PowMod(BigInt &C,BigInt &A,BigInt &B,BigInt &N);//大數乘方取模
bool Inverse(BigInt &A,BigInt &X,BigInt &N,BigInt &Y);//求乘法逆元
bool Mul(BigInt &C,BigInt &A,BigInt &B);//大數乘法
bool Div(BigInt &M,BigInt &Spls,BigInt &A,BigInt &B);//大數除法
bool Add(BigInt &C,BigInt &A,BigInt &B);//大數加法
bool Sub(BigInt &C,BigInt &A,const BigInt &B);//大數減法
// 以下代碼作者:0200906 高志剛
bool ShR(BigInt &Out,BigInt &In,UINT len);//大數邏輯右移
int Cmp(const BigInt &A,const BigInt &B);//大數比較
BigInt New(long n);//產生一個大數
long GetVal(const BigInt &BI);//獲取大數的值
void SetVal(BigInt &BI,long n);//設置大數的值
bool BuildBIFromByte(BigInt &Out,const char *In,UINT len);//由輸入字節組構造一個大數
bool BuildBIFromHalfByte(BigInt &Out,const char *In,UINT len);//由輸入半字節組構造一個大數
bool BuildBIFromStr(BigInt &Out,char *In,UINT len);//由輸入字符串構造一個大數
bool RandVal(BigInt &Out,UINT len);//產生隨機大數
private:
// 以下代碼作者:0200935 王俊川
bool GetDivNext(BigInt &Spls,const BigInt &A,const BigInt &B,int &i);
// 以下代碼作者:0200906 高志剛
bool InitMulCache(BigInt &In);//初始化乘法緩存
void SetLen(BigInt &BI,UINT start);//設置大數的長度
private:
BigInt MulCache[ BI_BASE ];//乘法緩沖區
BigInt Zero,One,Two;
};
#endif // !defined(AFX_BIGINT_H__E0A91F42_DF86_11D6_B0C1_00E04C391A51__INCLUDED_)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -