に数字(権力)のシーケンスを生成する力を生成するために、1より大きい奇数の指数と特異番号:第三の勢力、第五の力を、第7勢力、など。私の希望する出力は、は(まだ良いかコードを!)私は、アルゴリズムを探しているため
8, 27, 32, 125, 128, 216, 243, 343, 512, 1000
などです。
メモリに収まるようにあまりにも多くのメモリを作っているので、リストにその能力を格納しておきたいとは思っていません。メモリの所要量に相当する1程度です。 ≈1 TB。
私の基本的な考え方は、指数ごとに現在の数値(2から始まる)を保持し、3から始めて限界値のバイナリログに行くことです。各ステップで、指数配列をループして、最小のパワー(基底、指数)または可能性の高い指数* log(基底)のいずれかを見つけ、これらの値をおそらくメモする)を見つける。その時点で実際に数値で計算する「出力」関数を呼び出しますが、もちろんそのことについて心配する必要はありません。
もちろん、数字の範囲のために、bignumを使用する必要があります。つまり、言語、ライブラリ、またはセルフ・ロールに組み込む必要があります。関連するコードやコードスニペットはわかります:私はこのタスクがいくつかの古典的な問題に似ていると感じます(例えば、ハミングの数字を生成する問題は2 x y zです)効率的に私はかなり言語には無関係です。私の「出力」関数に必要なのは、配列、減算、ビッグ・ワード比較、ビギナン整数平方根関数です。 2で
あなたは*怠惰* Haskellのような言語は、無限のシーケンスを生成するために考えられた後、および1.3ギガバイト平文出力(それは23桁です)で現在実行がありますか? – deceze
@deceze:確かに、それは私の最初の考えでした。実際には、それが私にとって非常に重要な効率の点でどのように比較されるのかはわかりません。私はこの上に10^15のサイクルを費やすかもしれません... – Charles