我正在尝试使用c#计算2 ^ 1000(2到1000的幂)。我需要所有地方的价值。我一直在摸不着头脑,因为我似乎无法找到在c#中实现这一目标的方法。
是否存在某种类型,可存储300多位数字,我缺少? :)
由于
答案 0 :(得分:18)
是的,但仅限于.NET 4.0 - System.Numerics.BigInteger
。
如果你可以使用.NET 4.0,那我就去做吧。否则,我确信周围有第三方库。如果您希望我尝试找一些,请告诉我。
答案 1 :(得分:7)
如果您的目标是在Euler问题上运用C#技能,那么使用BigInt库似乎毫无意义。如果您只需要2 ^ 1000的值作为解决另一个问题的一个步骤,那么它就是。
10715086071862673209484250490600018105614048117055
33607443750388370351051124936122493198378815695858
12759467291755314682518714528569231404359845775746
98574803934567774824230985421074605062371141877954
18215304647498358194126739876755916554394607706291
4571196477686542167660429831652624386837205668069376
答案 2 :(得分:4)
System.Numerics.BigInteger如果你在.net 4.0(VS 2010)
或者,在网络上寻找一个良好的bigint实施 - 有很多可供选择。
答案 3 :(得分:1)
您可以使用数组来存储您的数字。我知道它很乱,但基本上你必须像手动那样编程乘法,除了你的代码。
答案 4 :(得分:1)
您可以使用F#来测试它,因为它可以在VS2008中运行,但对于生产应用程序来说,这将是一个问题。
查看问题#25,http://blogs.msdn.com/mpeck/archive/2009/04/01/solving-problems-in-c-and-f-part-2.aspx,因为它将显示您可以使用的方法。
您的C#应用程序可以调用F#类,它们可以一起工作。
答案 5 :(得分:1)
如果你可以使用IronRuby(不确定目前有多可用),它会隐式转换为Bignum。例如:
2 ** 1000
给出:
107150860718626732094842504906000181056140...
答案 6 :(得分:1)
我知道这个问题已经很老了,但谷歌仍然可以找到它。 我遇到了同样的问题,我正在寻找一个用大数(或小数)计算的数据库,这些数字无法用标准数据类型表示。
所以我创建了一个名为EDecimal
的新数据类型。使用此数据类型,您可以使用任意大小和精度的数字进行计算。如果数字有10位数或1000000则无关紧要。
答案 7 :(得分:0)
这里有一堂课 BigInt
对于没有.Net 4.0的那类问题非常有用
答案 8 :(得分:0)
呃...,2 ^ 0是第1位,2 ^ 1是第2位,...,2 ^ 4是第5位....你需要1000位。我对c#一无所知,但是,只记得按位表示法是999 0,一个1?并相应地使用它。
您打算将这个号码用于什么?
答案 9 :(得分:0)
你可以添加对Java运行时的引用(C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ vjslib.dll就是我得到的)和using java.math
,你得到一个{{ 1}}