⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hugeint.h

📁 这是一个应用软件,用于处理大数,里面包含一些小的实用的软件,如生成 素数 ,大数阶乘.
💻 H
📖 第 1 页 / 共 2 页
字号:
// HugeInt.h: interface for the CHugeInt class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_HUGEINT_H__5B7DCBAC_6D89_4C55_B51F_D96B5E741B51__INCLUDED_)
#define AFX_HUGEINT_H__5B7DCBAC_6D89_4C55_B51F_D96B5E741B51__INCLUDED_

#if _MSC_VER > 1000
	#pragma once
#endif // _MSC_VER > 1000

#include "HugeCalc.h"
#include "RadixConverter.h"

class CHugeSInt;
class CHugeInt;

typedef struct tagLPCHUGEINT_CVECTOR
{
	CONST CHugeInt ** p_start;
	UINT32 u32Size;
} LPCHUGEINT_CVECTOR;

#define HUGEINT_API HUGECALC_API

class HUGEINT_API CHugeInt
{
	friend class CHugeIntX;
	friend CRadixConverter& CRadixConverter::operator =( CONST CHugeInt& right );
	// CompareAbs
	HUGEINT_API friend CONST SINT32 CompareAbs( CONST UINT32 u32Num, CONST CHugeInt& right );
	HUGEINT_API friend CONST SINT32 CompareAbs( CONST SINT32 s32Num, CONST CHugeInt& right );

	HUGEINT_API friend CONST SINT32 CompareAbs( CONST CHugeInt& left, CONST UINT32 u32Num );
	HUGEINT_API friend CONST SINT32 CompareAbs( CONST CHugeInt& left, CONST SINT32 s32Num );

	HUGEINT_API friend CONST SINT32 CompareAbs( CONST CHugeInt& left, CONST CHugeInt& right );

	// Compare
	HUGEINT_API friend CONST SINT32 Compare( CONST UINT32 u32Num, CONST CHugeInt& right );
	HUGEINT_API friend CONST SINT32 Compare( CONST SINT32 s32Num, CONST CHugeInt& right );

	HUGEINT_API friend CONST SINT32 Compare( CONST CHugeInt& left, CONST UINT32 u32Num );
	HUGEINT_API friend CONST SINT32 Compare( CONST CHugeInt& left, CONST SINT32 s32Num );

	HUGEINT_API friend CONST SINT32 Compare( CONST CHugeInt& left, CONST CHugeInt& right );

	// PowMod
	HUGEINT_API friend CONST UINT32 PowMod( CONST UINT32 u32Base, CONST CHugeInt& hugeExp, CONST UINT32 u32Mod );
	HUGEINT_API friend CONST SINT64 PowMod( CONST CHugeInt& hugeBase, CONST UINT32 u32Exp, CONST UINT32 u32Mod );
	HUGEINT_API friend CONST SINT64 PowMod( CONST CHugeInt& hugeBase, CONST SINT32 s32Exp, CONST UINT32 u32Mod );
	HUGEINT_API friend CONST SINT64 PowMod( CONST CHugeInt& hugeBase, CONST CHugeInt& hugeExp, CONST UINT32 u32Mod );

	// relation operators
	HUGEINT_API friend CONST BOOL operator ==( CONST UINT32 u32Num, CONST CHugeInt& right );
	HUGEINT_API friend CONST BOOL operator ==( CONST SINT32 s32Num, CONST CHugeInt& right );

	HUGEINT_API friend CONST BOOL operator ==( CONST CHugeInt& left, CONST UINT32 u32Num );
	HUGEINT_API friend CONST BOOL operator ==( CONST CHugeInt& left, CONST SINT32 s32Num );

	HUGEINT_API friend CONST BOOL operator ==( CONST CHugeInt& left, CONST CHugeInt& right );

	HUGEINT_API friend CONST BOOL operator !=( CONST UINT32 u32Num, CONST CHugeInt& right );
	HUGEINT_API friend CONST BOOL operator !=( CONST SINT32 s32Num, CONST CHugeInt& right );

	HUGEINT_API friend CONST BOOL operator !=( CONST CHugeInt& left, CONST UINT32 u32Num );
	HUGEINT_API friend CONST BOOL operator !=( CONST CHugeInt& left, CONST SINT32 s32Num );

	HUGEINT_API friend CONST BOOL operator !=( CONST CHugeInt& left, CONST CHugeInt& right );

	HUGEINT_API friend CONST BOOL operator <( CONST UINT32 u32Num, CONST CHugeInt& right );
	HUGEINT_API friend CONST BOOL operator <( CONST SINT32 s32Num, CONST CHugeInt& right );

	HUGEINT_API friend CONST BOOL operator <( CONST CHugeInt& left, CONST UINT32 u32Num );
	HUGEINT_API friend CONST BOOL operator <( CONST CHugeInt& left, CONST SINT32 s32Num );

	HUGEINT_API friend CONST BOOL operator <( CONST CHugeInt& left, CONST CHugeInt& right );

	HUGEINT_API friend CONST BOOL operator <=( CONST UINT32 u32Num, CONST CHugeInt& right );
	HUGEINT_API friend CONST BOOL operator <=( CONST SINT32 s32Num, CONST CHugeInt& right );

	HUGEINT_API friend CONST BOOL operator <=( CONST CHugeInt& left, CONST UINT32 u32Num );
	HUGEINT_API friend CONST BOOL operator <=( CONST CHugeInt& left, CONST SINT32 s32Num );

	HUGEINT_API friend CONST BOOL operator <=( CONST CHugeInt& left, CONST CHugeInt& right );

	HUGEINT_API friend CONST BOOL operator >( CONST UINT32 u32Num, CONST CHugeInt& right );
	HUGEINT_API friend CONST BOOL operator >( CONST SINT32 s32Num, CONST CHugeInt& right );

	HUGEINT_API friend CONST BOOL operator >( CONST CHugeInt& left, CONST UINT32 u32Num );
	HUGEINT_API friend CONST BOOL operator >( CONST CHugeInt& left, CONST SINT32 s32Num );

	HUGEINT_API friend CONST BOOL operator >( CONST CHugeInt& left, CONST CHugeInt& right );

	HUGEINT_API friend CONST BOOL operator >=( CONST UINT32 u32Num, CONST CHugeInt& right );
	HUGEINT_API friend CONST BOOL operator >=( CONST SINT32 s32Num, CONST CHugeInt& right );

	HUGEINT_API friend CONST BOOL operator >=( CONST CHugeInt& left, CONST UINT32 u32Num );
	HUGEINT_API friend CONST BOOL operator >=( CONST CHugeInt& left, CONST SINT32 s32Num );

	HUGEINT_API friend CONST BOOL operator >=( CONST CHugeInt& left, CONST CHugeInt& right );

	// +
	HUGEINT_API friend CONST CHugeInt operator +( CONST UINT32 u32Num, CONST CHugeInt& right );
	HUGEINT_API friend CONST CHugeInt operator +( CONST SINT32 s32Num, CONST CHugeInt& right );

	HUGEINT_API friend CONST CHugeInt operator +( CONST CHugeInt& left, CONST UINT32 u32Num );
	HUGEINT_API friend CONST CHugeInt operator +( CONST CHugeInt& left, CONST SINT32 s32Num );

	HUGEINT_API friend CONST CHugeInt operator +( CONST CHugeInt& left, CONST CHugeInt& right );

	// -
	HUGEINT_API friend CONST CHugeInt operator -( CONST UINT32 u32Num, CONST CHugeInt& right );
	HUGEINT_API friend CONST CHugeInt operator -( CONST SINT32 s32Num, CONST CHugeInt& right );

	HUGEINT_API friend CONST CHugeInt operator -( CONST CHugeInt& left, CONST UINT32 u32Num );
	HUGEINT_API friend CONST CHugeInt operator -( CONST CHugeInt& left, CONST SINT32 s32Num );

	HUGEINT_API friend CONST CHugeInt operator -( CONST CHugeInt& left, CONST CHugeInt& right );

	// *
	HUGEINT_API friend CONST CHugeInt operator *( CONST UINT32 u32Num, CONST CHugeInt& right );
	HUGEINT_API friend CONST CHugeInt operator *( CONST SINT32 s32Num, CONST CHugeInt& right );

	HUGEINT_API friend CONST CHugeInt operator *( CONST CHugeInt& left, CONST UINT32 u32Num );
	HUGEINT_API friend CONST CHugeInt operator *( CONST CHugeInt& left, CONST SINT32 s32Num );

	HUGEINT_API friend CONST CHugeInt operator *( CONST CHugeInt& left, CONST CHugeInt& right );

	// Division, return quotient
	HUGEINT_API friend CONST SINT64 Div( CONST UINT32 u32Dividend, CONST CHugeInt& hugeDivisor, UINT32 * CONST pRemainder = NULL );
	HUGEINT_API friend CONST SINT32 Div( CONST SINT32 s32Dividend, CONST CHugeInt& hugeDivisor, SINT32 * CONST pRemainder = NULL );

	// /
	HUGEINT_API friend CONST SINT64 operator /( CONST UINT32 u32Num, CONST CHugeInt& right );
	HUGEINT_API friend CONST SINT32 operator /( CONST SINT32 s32Num, CONST CHugeInt& right );

	HUGEINT_API friend CONST CHugeInt operator /( CONST CHugeInt& left, CONST UINT32 u32Num );
	HUGEINT_API friend CONST CHugeInt operator /( CONST CHugeInt& left, CONST SINT32 s32Num );

	HUGEINT_API friend CONST CHugeInt operator /( CONST CHugeInt& left, CONST CHugeInt& right );

	// %
	HUGEINT_API friend CONST UINT32 operator %( CONST UINT32 u32Num, CONST CHugeInt& right );
	HUGEINT_API friend CONST SINT32 operator %( CONST SINT32 s32Num, CONST CHugeInt& right );

	HUGEINT_API friend CONST SINT64 operator %( CONST CHugeInt& left, CONST UINT32 u32Num );
	HUGEINT_API friend CONST SINT32 operator %( CONST CHugeInt& left, CONST SINT32 s32Num );

	HUGEINT_API friend CONST CHugeInt operator %( CONST CHugeInt& left, CONST CHugeInt& right );

public:
	// Constructor
	explicit CHugeInt( VOID );
	explicit CHugeInt( CONST SINT32& s32Num );
	explicit CHugeInt( CONST SINT64& s64Num );
	explicit CHugeInt( CONST UINT32& u32Num );
	explicit CHugeInt( CONST UINT64& u64Num );
	explicit CHugeInt( CONST LPCTSTR lpszNum );
	explicit CHugeInt( CONST CRadixConverter& RadixConverter );
	explicit CHugeInt( CONST CHugeInt& right );
	explicit CHugeInt( CONST CHugeIntX& right );

	// destructor
	/*virtual */~CHugeInt( );

	static CONST UINT32 GetCount( VOID );

	// reload operator ->
	CHugeInt * 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 IsPrime( VOID ) CONST;
	CONST PRIMALITY TestPrimality( CONST UINT32 u32Repeat = 5 ) CONST;
	CONST UINT32 GetBits( VOID ) CONST;
	CONST UINT32 GetDigits( VOID ) CONST;
	CONST UINT32 GetTailDecZeros( 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 + -