使用大数字的最快方法

时间:2013-10-28 12:44:19

标签: algorithm biginteger

有没有办法合理地操作非常大的整数(数百万或数十亿个数字)?我需要做的操作是简单的+, - ,*和/或

我正在寻找的算法是在合理的时间内完成上述操作(比如在现代PC上最多1小时)。我不介意对数字使用任何类型的表示,但如果我需要为每个操作使用不同的表示,那么不同表示之间的转换也应该在合理的时间内完成。

当我用这个大小的数字时,我所看到的所有大数字库都完全崩溃了。这是否表示不存在此类算法,或者只是这些库表示/实现未针对此类大小进行优化?

编辑 1小时的限制可能是不可能的。我给出了这个数字,因为一个十亿次迭代的简单循环应该少于这个,我希望有一个使用O(n)时间的算法。 24小时的限制似乎更合理吗?

1 个答案:

答案 0 :(得分:2)

您可能希望查看DecInt Python class

这针对很长的十进制整数进行了优化。 (这些数字存储在一个表示中,可以在O(n)时间内轻松转换为十进制数字。)

它可以执行您希望的操作,包括:

  1. O(n ln(n))中的乘法
  2. 划分为O(n ln(n)^ 2)