代码之家  ›  专栏  ›  技术社区  ›  Mike

计算非常大的整数

  •  6
  • Mike  · 技术社区  · 16 年前

    我试图用c#计算2^1000(2的1000次方)。我需要所有地方的价值。我一直在挠头,因为我似乎无法在c#中找到实现这一点的方法。

    是否有某种类型可以存储我缺少的300+位数字? :)

    谢谢

    10 回复  |  直到 16 年前
        1
  •  18
  •   Jon Skeet    16 年前

    System.Numerics.BigInteger .

    如果你可以使用。NET 4.0,我会选择它。否则,我肯定周围有第三方图书馆。如果你想让我试着找一些,请告诉我。

        2
  •  7
  •   I. J. Kennedy ShankarSangoli    15 年前

    如果你的目标是在Euler问题上锻炼你的C#技能,那么使用BigInt库似乎毫无意义。如果你只需要2^1000的值作为解决另一个问题的步骤,那么,它就在这里。

    10715086071862673209484250490600018105614048117055
    33607443750388370351051124936122493198378815695858
    12759467291755314682518714528569231404359845775746
    98574803934567774824230985421074605062371141877954
    18215304647498358194126739876755916554394607706291
    4571196477686542167660429831652624386837205668069376
    
        3
  •  4
  •   Community Mohan Dere    9 年前

    系统。数字。如果你使用的是.net 4.0(VS 2010),则使用BigInteger

    或者,寻找一个好的 bigint 在web上实现-有很多可供选择。

    this StackOverflow question .

        4
  •  1
  •   AlbertoPL    16 年前

    你可以使用数组来存储你的数字。我知道这很混乱,但基本上你必须像手工一样编程乘法,除了在代码中。

        6
  •  1
  •   Benjamin Oakes    16 年前

    如果你可以使用IronRuby(目前不确定它有多有用),它有隐式转换为Bignum。例子:

    2 ** 1000 给予: 107150860718626732094842504906000181056140...

        7
  •  1
  •   teo van kot    9 年前

    我知道这个问题很古老,但谷歌仍然能找到它。 我也遇到了同样的问题,我正在寻找一个库来计算无法用标准数据类型表示的巨大(或较小)数字。

    EDecimal 。使用此数据类型,您可以使用任意大小和精度的数字进行计算。数字是10位数还是1000000并不重要。

    看看吧 https://github.com/anakonda3000/HyperMath/

        8
  •  0
  •   MaLio    16 年前

    这里有一个班叫 BigInt

        9
  •  0
  •   dstibbe    16 年前

    嗯。..,2^0是第1位,2^1是第2位。..,2^4是第5位。…你需要1000比特。我对c#一无所知,但是,记住按位表示法是999 0加1怎么样?并相应地使用它。

    你打算用这个号码干什么?

        10
  •  0
  •   Cade Roux    16 年前

    using java.math BigInteger