4

プログラマーが非常に大きな数を見つける必要がある、または見つけたいと考えるシナリオがいくつかあります。多くの場合、これらは非常に大きいため、プログラマーの理解に反します。私が話しているのは、知られている最大の素数(12978189) や、最近計算された10 兆桁の piなどです。

これらを処理するプログラムをどのように作成できますか? これは、integer、long、double、BigInteger、BigDecimal、またはその他の種類のものをはるかに超えています。これらの数を発見するためのこのような種類のプログラムはどのように作成されるのでしょうか? 適切なデータ型が存在せず、それぞれがギガバイトのデータを消費する可能性がある場合、どうすればそれらをメモリに格納できますか?

4

2 に答える 2

4

特定の例に対処するには:

  • 1200 万桁の整数は、典型的な「大きな整数」クラスが処理するにはそれほど大きくありません。これはメモリに保存できるはずです。

  • 10 兆桁の π を格納するには、ディスク ファイルを使用してメモリ マップを作成します。64 ビットの OS とアプリケーションが必要ですが、ディスク上に 10 テラバイトのファイルを簡単に作成できます (おそらく、いくつかのディスクと、それを複数のディスクに格納できるZFSのようなファイル システムが必要です)。それを CPU アドレスにマップします。スペース。π を計算するアルゴリズム ( BBPなど) は、一度に 1 桁の 16 進数を計算するので、メモリの半分のバイトに収まります。

于 2012-11-24T18:35:13.950 に答える