3

データベースとクックブックを検索しましたが、正しい答えが見つからないようです。範囲内の自己パワーを合計する非常に単純な python コードがあります。この非常に大きな数の最後の 10 桁が必要で、getcontext().prec を試しましたが、まだ制限に達しています。

コードは次のとおりです。

def SelfPowers(n):
      total = 0
      for i in range(1,n):
          total += (i**i)
      return(total)

print SelfPowers(n)

どうすればこれらの美しい数字をすべて見ることができますか? 私のクアッドコアでは比較的高速に印刷されます。これは ProjectEuler の楽しみのためだけのものです。問題 #48、ネタバレは避けてください。解決策は望んでいません。また、私のために仕事を終わらせたくないので、正しい方向に向けていただければ幸いです。

ありがとう、mp

4

2 に答える 2

8

数値の最後の 10 桁が必要な場合は、すべてを計算しないでください (メモリと時間がかかりすぎます)。

代わりに、「3 引数」形式をpow使用して特定の基数を法とするべき乗を計算することを検討してください。問題がはるかに簡単であることがわかります。

于 2013-02-27T07:54:54.220 に答える
2

Python 3.2 でテストすることができました

print(SelfPowers(10000))

数秒かかりましたが。どのくらいの数を考えていましたか?

編集:1000 ?を使用したいようです そのような場合は、Python 3 にアップグレードすれば問題ありません。

于 2013-02-27T07:55:01.937 に答える