📄 hugeintx.h
字号:
// HugeIntX.h: interface for the CHugeIntX class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_HUGEINTX_H__5B7DCBAC_6D89_4C55_B51F_D96B5E741B51__INCLUDED_)
#define AFX_HUGEINTX_H__5B7DCBAC_6D89_4C55_B51F_D96B5E741B51__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "HugeCalc.h"
#include "RadixConverter.h"
class CHugeSIntX;
class CHugeIntX;
typedef struct tagLPCHUGEINTX_CVECTOR
{
CONST CHugeIntX ** p_start;
UINT32 u32Size;
} LPCHUGEINTX_CVECTOR;
#define HUGEINTX_API HUGECALC_API
class HUGEINTX_API CHugeIntX
{
friend class CHugeInt;
friend CRadixConverter& CRadixConverter::operator =( CONST CHugeIntX& right );
// CompareAbs
HUGEINTX_API friend CONST SINT32 CompareAbs( CONST UINT32 u32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST SINT32 CompareAbs( CONST SINT32 s32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST SINT32 CompareAbs( CONST CHugeIntX& left, CONST UINT32 u32Num );
HUGEINTX_API friend CONST SINT32 CompareAbs( CONST CHugeIntX& left, CONST SINT32 s32Num );
HUGEINTX_API friend CONST SINT32 CompareAbs( CONST CHugeIntX& left, CONST CHugeIntX& right );
// Compare
HUGEINTX_API friend CONST SINT32 Compare( CONST UINT32 u32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST SINT32 Compare( CONST SINT32 s32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST SINT32 Compare( CONST CHugeIntX& left, CONST UINT32 u32Num );
HUGEINTX_API friend CONST SINT32 Compare( CONST CHugeIntX& left, CONST SINT32 s32Num );
HUGEINTX_API friend CONST SINT32 Compare( CONST CHugeIntX& left, CONST CHugeIntX& right );
// PowMod
HUGEINTX_API friend CONST UINT32 PowMod( CONST UINT32 u32Base, CONST CHugeIntX& hugeExp, CONST UINT32 u32Mod );
HUGEINTX_API friend CONST SINT64 PowMod( CONST CHugeIntX& hugeBase, CONST UINT32 u32Exp, CONST UINT32 u32Mod );
HUGEINTX_API friend CONST SINT64 PowMod( CONST CHugeIntX& hugeBase, CONST SINT32 s32Exp, CONST UINT32 u32Mod );
HUGEINTX_API friend CONST SINT64 PowMod( CONST CHugeIntX& hugeBase, CONST CHugeIntX& hugeExp, CONST UINT32 u32Mod );
// relation operators
HUGEINTX_API friend CONST BOOL operator ==( CONST UINT32 u32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST BOOL operator ==( CONST SINT32 s32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST BOOL operator ==( CONST CHugeIntX& left, CONST UINT32 u32Num );
HUGEINTX_API friend CONST BOOL operator ==( CONST CHugeIntX& left, CONST SINT32 s32Num );
HUGEINTX_API friend CONST BOOL operator ==( CONST CHugeIntX& left, CONST CHugeIntX& right );
HUGEINTX_API friend CONST BOOL operator !=( CONST UINT32 u32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST BOOL operator !=( CONST SINT32 s32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST BOOL operator !=( CONST CHugeIntX& left, CONST UINT32 u32Num );
HUGEINTX_API friend CONST BOOL operator !=( CONST CHugeIntX& left, CONST SINT32 s32Num );
HUGEINTX_API friend CONST BOOL operator !=( CONST CHugeIntX& left, CONST CHugeIntX& right );
HUGEINTX_API friend CONST BOOL operator <( CONST UINT32 u32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST BOOL operator <( CONST SINT32 s32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST BOOL operator <( CONST CHugeIntX& left, CONST UINT32 u32Num );
HUGEINTX_API friend CONST BOOL operator <( CONST CHugeIntX& left, CONST SINT32 s32Num );
HUGEINTX_API friend CONST BOOL operator <( CONST CHugeIntX& left, CONST CHugeIntX& right );
HUGEINTX_API friend CONST BOOL operator <=( CONST UINT32 u32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST BOOL operator <=( CONST SINT32 s32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST BOOL operator <=( CONST CHugeIntX& left, CONST UINT32 u32Num );
HUGEINTX_API friend CONST BOOL operator <=( CONST CHugeIntX& left, CONST SINT32 s32Num );
HUGEINTX_API friend CONST BOOL operator <=( CONST CHugeIntX& left, CONST CHugeIntX& right );
HUGEINTX_API friend CONST BOOL operator >( CONST UINT32 u32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST BOOL operator >( CONST SINT32 s32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST BOOL operator >( CONST CHugeIntX& left, CONST UINT32 u32Num );
HUGEINTX_API friend CONST BOOL operator >( CONST CHugeIntX& left, CONST SINT32 s32Num );
HUGEINTX_API friend CONST BOOL operator >( CONST CHugeIntX& left, CONST CHugeIntX& right );
HUGEINTX_API friend CONST BOOL operator >=( CONST UINT32 u32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST BOOL operator >=( CONST SINT32 s32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST BOOL operator >=( CONST CHugeIntX& left, CONST UINT32 u32Num );
HUGEINTX_API friend CONST BOOL operator >=( CONST CHugeIntX& left, CONST SINT32 s32Num );
HUGEINTX_API friend CONST BOOL operator >=( CONST CHugeIntX& left, CONST CHugeIntX& right );
// +
HUGEINTX_API friend CONST CHugeIntX operator +( CONST UINT32 u32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST CHugeIntX operator +( CONST SINT32 s32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST CHugeIntX operator +( CONST CHugeIntX& left, CONST UINT32 u32Num );
HUGEINTX_API friend CONST CHugeIntX operator +( CONST CHugeIntX& left, CONST SINT32 s32Num );
HUGEINTX_API friend CONST CHugeIntX operator +( CONST CHugeIntX& left, CONST CHugeIntX& right );
// -
HUGEINTX_API friend CONST CHugeIntX operator -( CONST UINT32 u32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST CHugeIntX operator -( CONST SINT32 s32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST CHugeIntX operator -( CONST CHugeIntX& left, CONST UINT32 u32Num );
HUGEINTX_API friend CONST CHugeIntX operator -( CONST CHugeIntX& left, CONST SINT32 s32Num );
HUGEINTX_API friend CONST CHugeIntX operator -( CONST CHugeIntX& left, CONST CHugeIntX& right );
// *
HUGEINTX_API friend CONST CHugeIntX operator *( CONST UINT32 u32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST CHugeIntX operator *( CONST SINT32 s32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST CHugeIntX operator *( CONST CHugeIntX& left, CONST UINT32 u32Num );
HUGEINTX_API friend CONST CHugeIntX operator *( CONST CHugeIntX& left, CONST SINT32 s32Num );
HUGEINTX_API friend CONST CHugeIntX operator *( CONST CHugeIntX& left, CONST CHugeIntX& right );
// Division, return quotient
HUGEINTX_API friend CONST SINT64 Div( CONST UINT32 u32Dividend, CONST CHugeIntX& hugeDivisor, UINT32 * CONST pRemainder = NULL );
HUGEINTX_API friend CONST SINT32 Div( CONST SINT32 s32Dividend, CONST CHugeIntX& hugeDivisor, SINT32 * CONST pRemainder = NULL );
// /
HUGEINTX_API friend CONST SINT64 operator /( CONST UINT32 u32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST SINT32 operator /( CONST SINT32 s32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST CHugeIntX operator /( CONST CHugeIntX& left, CONST UINT32 u32Num );
HUGEINTX_API friend CONST CHugeIntX operator /( CONST CHugeIntX& left, CONST SINT32 s32Num );
HUGEINTX_API friend CONST CHugeIntX operator /( CONST CHugeIntX& left, CONST CHugeIntX& right );
// %
HUGEINTX_API friend CONST UINT32 operator %( CONST UINT32 u32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST SINT32 operator %( CONST SINT32 s32Num, CONST CHugeIntX& right );
HUGEINTX_API friend CONST SINT64 operator %( CONST CHugeIntX& left, CONST UINT32 u32Num );
HUGEINTX_API friend CONST SINT32 operator %( CONST CHugeIntX& left, CONST SINT32 s32Num );
HUGEINTX_API friend CONST CHugeIntX operator %( CONST CHugeIntX& left, CONST CHugeIntX& right );
public:
// Constructor
explicit CHugeIntX( VOID );
explicit CHugeIntX( CONST SINT32& s32Num );
explicit CHugeIntX( CONST SINT64& s64Num );
explicit CHugeIntX( CONST UINT32& u32Num );
explicit CHugeIntX( CONST UINT64& u64Num );
explicit CHugeIntX( CONST LPCTSTR lpszNum );
explicit CHugeIntX( CONST CRadixConverter& RadixConverter );
explicit CHugeIntX( CONST CHugeIntX& right );
explicit CHugeIntX( CONST CHugeInt& right );
// destructor
/*virtual */~CHugeIntX( );
static CONST UINT32 GetCount( VOID );
// reload operator ->
CHugeIntX * CONST operator ->( VOID );
// get property
CONST SIGN GetSign( VOID ) CONST;
CONST BOOL operator !( VOID ) CONST;
CONST BOOL IsAbsOne( VOID ) CONST;
CONST BOOL IsOdd( VOID ) CONST;
CONST BOOL IsEven( VOID ) CONST;
CONST BOOL IsBitOne( CONST UINT32 u32BitIndex ) CONST;
CONST BOOL IsPrime( VOID ) CONST;
CONST PRIMALITY TestPrimality( CONST UINT32 u32Repeat = 5 ) CONST;
CONST UINT32 GetBits( VOID ) CONST;
CONST UINT32 GetDigits( VOID ) CONST;
CONST UINT32 GetTailBitZeros( VOID ) CONST;
// Return non-zero if the value of (*this) fits in SINT32, UINT32, SINT64 or UINT64, respectively. Otherwise, return zero.
operator CONST SINT32( VOID ) CONST;
operator CONST SINT64( VOID ) CONST;
operator CONST UINT32( VOID ) CONST;
operator CONST UINT64( VOID ) CONST;
// as GetStr( FS_FS_NORMAL )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -