【问题标题】:How can I represent a very large integer in .NET?如何在 .NET 中表示一个非常大的整数?
【发布时间】:2010-09-06 17:23:40
【问题描述】:

.NET 是否带有能够表示极大整数的类,例如 100 阶乘?如果没有,有什么好的第三方库可以做到这一点?

【问题讨论】:

  • 缺少 BigInt 类对您来说是一个专业吗?
  • 如果您在 Project Euler #20 上工作,这将是一件大事 :-)

标签: .net bignum


【解决方案1】:

.NET 4 有一个 BigInteger 类

表示一个任意大的有符号整数。

BigInteger 类型是一种不可变类型,它表示一个任意大的整数,其值在理论上没有上限或下限。此类型不同于 .NET Framework 中的其他整数类型,后者的范围由其 MinValue 和 MaxValue 属性指示。

【讨论】:

    【解决方案2】:

    .NET 有一个 BigInteger 类,但不幸的是它是内部的。但是,有几个地方有自己的。您可以从 IronPython、CodeProject 或 Visual J# 中获取一个实现。不得不说,这些我自己都没试过,所以不知道哪个最好。

    http://www.codeplex.com/IronPython http://www.codeproject.com/KB/cs/biginteger.aspx http://msdn.microsoft.com/en-us/magazine/cc163696.aspx

    【讨论】:

      【解决方案3】:

      Microsoft.FSharp.Math.Types.BigInt

      它可以表示任何整数。

      【讨论】:

        【解决方案4】:

        【讨论】:

          【解决方案5】:

          Mono 已经有一个公共的 BigInteger 实现:

          http://www.go-mono.com/docs/index.aspx?link=T:Mono.Math.BigInteger

          你可以抓住 Mono.Security 程序集来使用它;因为它是一个 Mono 类库,它也应该是 MIT 许可的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-08-02
            • 2020-01-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-03-05
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多