非常非常大的数字Python
我在数据库和食谱里搜索了很久,但就是找不到正确的答案。我有一段非常简单的Python代码,它可以计算一个范围内的自幂和。我需要这个非常非常大的数字的最后十位数字,我尝试过使用getcontext().prec,但还是遇到了限制。
这是代码:
def SelfPowers(n):
total = 0
for i in range(1,n):
total += (i**i)
return(total)
print SelfPowers(n)
我该如何查看那些美丽的数字呢?在我的四核处理器上打印得相对较快。这只是为了好玩,做的是ProjectEuler的第48题,请不要剧透,我不想要答案,也不想别人替我完成工作,所以如果你能给我一些指引就好了。
谢谢,
mp
2 个回答
2
我在Python 3.2上测试的时候可以做到这个
print(SelfPowers(10000))
不过花了几秒钟。你想要处理多大的数字呢?
补充:看起来你想用1000
这个数字?如果是这样的话,升级到Python 3就可以了,应该没问题。
8
如果你只想要一个数字的最后十位数字,那么就不要去计算整个数字(这样会占用太多内存和时间)。
相反,可以考虑使用pow
的“三个参数”形式来计算某个基数的幂的模,这样你会发现问题变得简单多了。