3

我搜索了数据库和食谱,但似乎找不到正确的答案。我有一个非常简单的 python 代码,它总结了一个范围内的自我权力。我需要这个非常非常大的数字的最后十位,我已经尝试了 getcontext().prec 但是我仍然遇到了限制。

这是代码:

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

print SelfPowers(n)

我怎样才能看到所有这些漂亮的数字?它在我的四核上打印速度相对较快。这只是为了 ProjectEuler 的乐趣,问题 #48,请不要剧透我不想要解决方案,我不希望为我完成工作,所以如果你能指出我正确的方向吗?

谢谢,议员

4

2 回答 2

8

如果你想要一个数字的最后十位,不要计算整个数字(这会占用太多的内存和时间)。

取而代之的是,考虑使用“三参数”的形式pow来计算特定基数的幂,您会发现问题要容易得多。

于 2013-02-27T07:54:54.220 回答
2

在 Python 3.2 上测试我能够

print(SelfPowers(10000))

虽然花了几秒钟。你想的是多大的数字?

编辑:看起来你想使用1000?在这种情况下,升级到 Python 3 就可以了。

于 2013-02-27T07:55:01.937 回答