在一个非常大的算术系列中添加数字的最快方法?

时间:2012-09-04 01:04:07

标签: c++

我在尝试在算术系列中添加数字时尽量减少开销。我说的是一个非常大的集合,例如从1到2 ^ 128。这样做有什么快捷的方法吗?如果是这样,没有实际使用算术序列和公式会是什么?作为参考,1到2 ^ 128之和为:

57896044618658097711785492504343953926464851149359812787997104700240680714240

1 个答案:

答案 0 :(得分:0)

只有快速的方法才能使用公式:

n * (n+1) / 2

任何其他方法(天真地添加)将花费太长时间! (即使你在超级计算机上有一百万年,你也不会完成计算)。

虽然对于这么大的整数,你不能使用普通整数。您将需要使用一个大整数对象。所以得到一个Big Integer库,例如。 Google searchhttps://mattmccutchen.net/bigint/

注意:256位整数可能能够将结果保持在该范围内,但它与平台和编译器有关,关于256位整数是否随时可用,以及它们是如何使用的。< / p>

相关问题