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

📄 hugeint.h

📁 这是一个应用软件,用于处理大数,里面包含一些小的实用的软件,如生成 素数 ,大数阶乘.
💻 H
📖 第 1 页 / 共 2 页
字号:
	operator CONST LPCTSTR( VOID ) CONST;

	CONST CHugeInt operator -( VOID ) CONST;

	CHugeInt& Abs( VOID );
	CHugeInt& Negate( VOID );
	CHugeInt& Swap( CHugeInt& right );

	CHugeInt& Ceil( CONST UINT32 u32DecDigits );
	CHugeInt& Truncate( CONST UINT32 u32DecDigits );
	CHugeInt& Floor( CONST UINT32 u32DecDigits );

	CHugeInt& Random( CONST UINT32 u32DecDigits );
	CHugeInt& GeneratePrime( CONST UINT32 u32DecDigits );

	// Returns the largest prime number less than the argument.
	CHugeInt& PreviousPrime( CONST  CHugeInt& hBenchmark );
	// Returns the smallest prime number greater than the argument.
	CHugeInt& NextPrime( CONST CHugeInt& hBenchmark );

	// reload operators
	CHugeInt& operator =( CONST SINT32& s32Num );
	CHugeInt& operator =( CONST SINT64& s64Num );
	CHugeInt& operator =( CONST UINT32& u32Num );
	CHugeInt& operator =( CONST UINT64& u64Num );
	CHugeInt& operator =( CONST LPCTSTR lpszNum );
	CHugeInt& operator =( CONST CRadixConverter& RadixConverter );
	CHugeInt& operator =( CONST CHugeInt& right );
	CHugeInt& operator =( CONST CHugeIntX& right );

	CHugeInt& SetHexStr( CONST LPCTSTR lpszHexNum );

	CHugeInt& operator +=( CONST UINT32 u32Num );
	CHugeInt& operator +=( CONST SINT32 s32Num );
	CHugeInt& operator +=( CONST CHugeInt& right );

	CHugeInt& operator ++( VOID );
	CONST CHugeInt operator ++( CONST INT );

	CHugeInt& operator -=( CONST UINT32 u32Num );
	CHugeInt& operator -=( CONST SINT32 s32Num );
	CHugeInt& operator -=( CONST CHugeInt& right );

	CHugeInt& operator --( VOID );
	CONST CHugeInt operator --( CONST INT );

	CHugeInt& operator *=( CONST UINT32 u32Num );
	CHugeInt& operator *=( CONST SINT32 s32Num );
	CHugeInt& operator *=( CONST CHugeInt& right );

	CHugeInt& operator /=( CONST UINT32 u32Num );
	CHugeInt& operator /=( CONST SINT32 s32Num );
	CHugeInt& operator /=( CONST CHugeInt& right );

	CHugeInt& operator %=( CONST UINT32 u32Num );
	CHugeInt& operator %=( CONST SINT32 s32Num );
	CHugeInt& operator %=( CONST CHugeInt& right );

	CHugeInt& operator <<=( CONST UINT32 u32BitLShift );
	CHugeInt& operator >>=( CONST UINT32 u32BitRShift );

	CONST CHugeInt operator <<( CONST UINT32 u32BitLShift ) CONST;
	CONST CHugeInt operator >>( CONST UINT32 u32BitRShift ) CONST;

	CHugeInt& operator &=( CONST CHugeInt& right );
	CHugeInt& operator ^=( CONST CHugeInt& right );
	CHugeInt& operator |=( CONST CHugeInt& right );

	CONST CHugeInt operator &( CONST CHugeInt& right ) CONST;
	CONST CHugeInt operator ^( CONST CHugeInt& right ) CONST;
	CONST CHugeInt operator |( CONST CHugeInt& right ) CONST;

	// notice: base on decimal system !!
	CHugeInt& DecLShift( CONST UINT32 u32DecLShift );
	CHugeInt& DecRShift( CONST UINT32 u32DecRShift );

	// Multiplication, return product
	CHugeInt& Mul( CONST UINT32 u32Multiplicand, CONST CHugeInt& hugeMultiplier );
	CHugeInt& Mul( CONST SINT32 s32Multiplicand, CONST CHugeInt& hugeMultiplier );

	CHugeInt& Mul( CONST CHugeInt& hugeMultiplicand, CONST UINT32 u32Multiplier );
	CHugeInt& Mul( CONST CHugeInt& hugeMultiplicand, CONST SINT32 s32Multiplier );

	CHugeInt& Mul( CONST CHugeInt& hugeMultiplicand, CONST CHugeInt& hugeMultiplier );

	// Division, return quotient
	CHugeInt& Div( CONST CHugeInt& hugeDividend, CONST UINT32 u32Divisor, SINT64 * CONST pRemainder = NULL );
	CHugeInt& Div( CONST CHugeInt& hugeDividend, CONST SINT32 s32Divisor, SINT32 * CONST pRemainder = NULL );

	CHugeInt& Div( CONST CHugeInt& hugeDividend, CONST CHugeInt& hugeDivisor, CHugeInt * CONST pRemainder = NULL );

	CHugeInt& Pow( CONST UINT32 u32Exp );
	CHugeInt& Pow( CONST CHugeInt& hugeBase, CONST UINT32 u32Exp );

	// Extraction
	CHugeInt& Root( CONST CHugeInt& hugeRadicand, CONST UINT32 u32Exp, CHugeInt * CONST pRemainder = NULL, BOOL * CONST pIsReal = NULL );

	// Logarithm
	CONST UINT32 Log( CONST UINT32 u32Base, BOOL * CONST pIsExact = NULL ) CONST;
	CONST UINT32 Log( CONST CHugeInt& hugeBase, BOOL * CONST pIsExact = NULL ) CONST;

	// "PrimeFactorial(n) gives the product of the first n primes."
	CHugeInt& PrimeFactorial( CONST UINT32 u32Index );

	// Factorial, Permutation, Combination
	CHugeInt& Factorial( CONST UINT32 n );
	CHugeInt& Factorial2( CONST UINT32 n );
	CHugeInt& Permutation( CONST UINT32 n, CONST UINT32 r );
	CHugeInt& Combination( CONST UINT32 n, CONST UINT32 r );

	// Fibonacci numbers
	CHugeInt& Fibonacci( CONST SINT32 n );

	// Lucas numbers
	CHugeInt& Lucas( CONST SINT32 n );

	// MulMod
	CHugeInt& MulMod( CONST CHugeInt& hugeMultiplicand, CONST CHugeInt& hugeMultiplier, CONST CHugeInt& hugeMod );
	CHugeInt& MulMod( CONST CHugeInt& hugeMultiplier, CONST CHugeInt& hugeMod );

	// InvertMod: x = InvertMod( b, m ) && !(!x) <==> ( b * x ) mod m = 1
	CHugeInt& InvertMod( CONST UINT32 u32InvertBase, CONST CHugeInt& hugeMod );
	CHugeInt& InvertMod( CONST CHugeInt& hugeInvertBase, CONST CHugeInt& hugeMod );
	CHugeInt& InvertMod( CONST CHugeInt& hugeMod );

	// PowMod
	CHugeInt& PowMod( CONST UINT32 u32Base, CONST UINT32 u32Exp, CONST CHugeInt& hugeMod );
	CHugeInt& PowMod( CONST UINT32 u32Base, CONST SINT32 s32Exp, CONST CHugeInt& hugeMod );
	CHugeInt& PowMod( CONST UINT32 u32Base, CONST CHugeInt& hugeExp, CONST CHugeInt& hugeMod );
	CHugeInt& PowMod( CONST CHugeInt& hugeBase, CONST UINT32 u32Exp, CONST CHugeInt& hugeMod );
	CHugeInt& PowMod( CONST CHugeInt& hugeBase, CONST SINT32 s32Exp, CONST CHugeInt& hugeMod );
	CHugeInt& PowMod( CONST CHugeInt& hugeBase, CONST CHugeInt& hugeExp, CONST CHugeInt& hugeMod );

	// ModPowTen: *this %= 10^u32Exp
	CHugeInt& ModPowTen( CONST UINT32 u32Exp );

	// Greatest Common Divisor
	CHugeInt& Gcd( CONST UINT32 u32Num, CONST CHugeInt& right );
	CHugeInt& Gcd( CONST SINT32 s32Num, CONST CHugeInt& right );
	CHugeInt& Gcd( CONST CHugeInt& left, CONST UINT32 u32Num );
	CHugeInt& Gcd( CONST CHugeInt& left, CONST SINT32 s32Num );

	CHugeInt& Gcd( CONST CHugeInt& left, CONST CHugeInt& right );

	CHugeInt& Gcd( CONST LPCHUGEINT_CVECTOR& vLpHugeInt );

	// GcdEx: g = GcdEx( x, y, u, v ) = u * x + v * y. g is always positive, even if one or both of u and v are negative.
	CHugeInt& GcdEx( CHugeInt& x, CHugeInt& y, CONST CHugeInt& u, CONST CHugeInt& v );

	// Lowest Common Multiple
	CHugeInt& Lcm( CONST UINT32_CVECTOR& vU32Num );

	CHugeInt& Lcm( CONST UINT32 u32Num, CONST CHugeInt& right );
	CHugeInt& Lcm( CONST SINT32 s32Num, CONST CHugeInt& right );
	CHugeInt& Lcm( CONST CHugeInt& left, CONST UINT32 u32Num );
	CHugeInt& Lcm( CONST CHugeInt& left, CONST SINT32 s32Num );

	CHugeInt& Lcm( CONST CHugeInt& left, CONST CHugeInt& right );

	CHugeInt& Lcm( CONST LPCHUGEINT_CVECTOR& vLpHugeInt );

	CHugeInt& Product( CONST UINT32_CVECTOR& vU32Num );
	CHugeInt& Product( CONST LPCHUGEINT_CVECTOR& vLpHugeInt );

	// if u32Exp==0, then call function: Product( ... );
	CHugeInt& SumsOfLikePowers( CONST UINT32_CVECTOR& vU32Num, CONST UINT32 u32Exp = 1 );
	CHugeInt& SumsOfLikePowers( CONST LPCHUGEINT_CVECTOR& vLpHugeInt, CONST UINT32 u32Exp = 1 );

	// Output
	CONST LPCTSTR GetStr( CONST BYTE byFormat = FS_DEFAULT, UINT32 * CONST pStrLen = NULL ) CONST;

	// no "0x"
	CONST LPCTSTR GetHexStr( CONST BYTE byFormat = FS_DEFAULT, UINT32 * CONST pStrLen = NULL ) CONST;

	// This function can convert the huge integer to a string of digits in another Radix system.
	CONST LPCTSTR GetStrRadix( CONST UINT32 u32Radix = 16, UINT32 * CONST pDigits = NULL, CONST BYTE byFormat = FS_DEFAULT, CONST UINT32 u32BandLength = 4, UINT32 * CONST pStrLen = NULL ) CONST;

	VOID FreeStrBuffer( VOID ) CONST;

protected:

private:
	explicit CHugeInt( CONST CHugeSInt& right );
	CHugeInt& operator =( CONST CHugeSInt& right );

	CHugeSInt * CONST m_pHugeSInt;
};

#endif // !defined(AFX_HUGEINT_H__5B7DCBAC_6D89_4C55_B51F_D96B5E741B51__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -