1

在算术级数中添加数字时,我试图尽可能减少开销。我说的是一个非常大的集合,例如从 1 到 2^128。有什么快速的方法吗?如果是这样,如果不实际使用等差数列和公式,那会是什么?作为参考,从 1 到 2^128 的总和是:

57896044618658097711785492504343953926464851149359812787997104700240680714240

4

1 回答 1

0

唯一快速的方法是使用公式:

n * (n+1) / 2

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

但是,对于这么大的整数,您不能使用普通整数。您将需要使用一个大整数对象。所以得到一个大整数库,例如。谷歌搜索https://mattmccutchen.net/bigint/

注意:256 位整数可能能够将结果保持在该比例附近,但对于 256 位整数是否容易获得以及如何使用它们,这完全取决于平台和编译器。

于 2012-09-04T01:08:59.093 回答