有没有人知道我可以用c#计算非常大的整数的方法
我试图计算数字的阶乘,例如
5!= 5*4*3*2*1 = 120
小数字这不是问题,但试图计算unsigned int的bigest值的阶乘,这是4,294,967,295它似乎不可能.
我已经查看了BigInteger类但它似乎没有做我需要的
任何帮助将不胜感激
首先,值得指出的是,因子uint.MaxValue是天文数字的.我无法找到其阶乘的数量级的良好估计,但它的位表示可能占据标准RAM的高百分比,如果不是很好的话.
一个BigInteger类似乎是你想要的,只要你想要达到大约1,000,000左右(非常粗略).在那之后,时间和记忆变得非常令人望而却步.在.NET的当前(稳定)版本中,最多3.5,您必须使用自定义实现.这一次在CodeProject上似乎高度评价.如果您正在为.NET 4.0开发,Microsoft团队终于开始在BCL BigInteger的System.Numerics命名空间中包含一个类.与一些BigInteger实现不同,.NET 4.0中存在的实现没有内置的阶乘方法(我不确定CodeProject的方法),但实现一个应该是微不足道的 - 扩展方法会很好办法.
由于您似乎认为您不想使用BigInteger类型,如果您可以验证它不是您想要阅读我的回复,然后解释为什么它不适合您的目的将会有所帮助.
4294967295!= 10 ^(10 ^ 10.597)~10 ^(40000000000)这个值需要大约40 Gb的RAM来存储,即使你会发现C#的任何BigInteger实现!
PS嗯,通过优化存储,让我们说4个字节的9位数,它需要~18 Gb的RAM.
| 归档时间: |
|
| 查看次数: |
6996 次 |
| 最近记录: |