算術級数に数値を追加するときのオーバーヘッドをできるだけ最小限に抑えようとしています。1 から 2^128 までの非常に大きなセットについて話しています。これを行う速い方法はありますか?もしそうなら、実際に算術数列の和の公式を使わないとどうなるでしょうか? 参考までに、1 から 2^128 までの合計は次のとおりです。
57896044618658097711785492504343953926464851149359812787997104700240680714240
算術級数に数値を追加するときのオーバーヘッドをできるだけ最小限に抑えようとしています。1 から 2^128 までの非常に大きなセットについて話しています。これを行う速い方法はありますか?もしそうなら、実際に算術数列の和の公式を使わないとどうなるでしょうか? 参考までに、1 から 2^128 までの合計は次のとおりです。
57896044618658097711785492504343953926464851149359812787997104700240680714240
唯一の迅速な方法は、次の式を使用することです。
n * (n+1) / 2
他の方法 (単純に追加) は時間がかかりすぎます。(スーパーコンピューターで 100 万年使用したとしても、計算は完了しません)。
ただし、このような大きな整数の場合、通常の整数は使用できません。大きな整数オブジェクトを使用する必要があります。たとえば、Big Integer ライブラリを取得します。Google 検索、https://mattmccutchen.net/bigint/。
注: 256 ビット整数は、そのスケールまでの結果を保持できる場合がありますが、256 ビット整数がすぐに利用できるかどうか、およびそれらがどのように使用されるかについては、プラットフォームとコンパイラに大きく依存します。