直接用 System.Numerics.BigInteger
类,无需安装额外包(.NET Framework 4.0+ / .NET Core 2.0+ 均内置)。
引入命名空间并声明变量
先在文件顶部加引用:
using System.Numerics;然后就可以像普通数字一样声明和初始化:
直接赋值字符串:BigInteger big = BigInteger.Parse("123456789012345678901234567890");
从整数转换:BigInteger big = (BigInteger)long.MaxValue + 1;用构造函数(支持 byte[] 或 uint[]):
BigInteger big = new BigInteger(new byte[] { 0x01, 0x00 }); // 小端序,值为 1
支持常规算术和比较操作
加减乘除、取模、幂运算、位运算、比较符(==, !=, 等)全部可用,语法和
int或
long完全一致:
BigInteger a = BigInteger.Pow(2, 100); // 2 的 100 次方
BigInteger b = a * 3 + 7;
bool isEven = (b & 1) == 0;
BigInteger gcd = BigInteger.GreatestCommonDivisor(a, b); // 内置 GCD 方法
注意输入输出和性能细节
BigInteger是不可变类型,每次运算都返回新实例;它不支持隐式转换,需显式转换或用
Parse/
TryParse: 转字符串推荐用
.ToString(),默认十进制;支持带格式器,如
big.ToString("X") 输出十六进制
读入大数优先用 BigInteger.TryParse(...)防异常,尤其来自用户输入或文件时 频繁运算(如密码学循环)可考虑缓存中间结果,避免重复创建对象 没有字面量语法(不能写
123456789012345678901234567890BigInteger),必须靠
Parse或构造函数
基本上就这些。用起来很自然,关键就是记得引用
Numerics命名空间,其他和普通数值类型几乎一样。
