有人可以指出一个网站,我可以找到一个算法,使用C#有效地计算整数取幂到大功率?
例如。我想计算2 ^ 60000或3 ^ 12345
答案 0 :(得分:13)
除非这是作业,否则你可能不希望自己实现任意精度取幂。计算你描述的类型的大指数是复杂的 - 除了性能。
我建议使用其中一个existing arbitrary precision arithmetic libraries, like GMP - 其中大多数都有库从C#访问它们。
F#支持使用BigInt类进行任意精度算术运算(如果导入其中的程序集,也可以从C#访问)。但是,我不知道BigInt取幂的优化程度如何。
如果您只是想了解有效的取幂算法,您可能需要查看Square-And-Multiply算法求幂。
答案 1 :(得分:2)
答案 2 :(得分:0)
检查一下:IntX用于处理LARGE整数。你可能必须编写自己的权力实现,但由于支持乘法,这应该不会那么难。
编辑280Z28:包括快速Pow,ModPow和素性测试的另一个实现是这个BigInteger实现(代码项目),我过去曾用过Project Euler问题 - 尽管我现在正在使用.NET 4.0并使用其System.Numerics.BigInteger实现。