【问题标题】:Very Very Large Number Python非常非常大的数 Python
【发布时间】:2013-02-27 15:55:01
【问题描述】:

我搜索了数据库和食谱,但似乎找不到正确的答案。我有一个非常简单的 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

【问题讨论】:

  • 提示:您不需要计算这些数字,只需计算它们的最后 10 位数字即可。所以,你可以使用数论相等mod(a*b, m) = mod(mod(a,m) * mod(b,m), m)(适用于m=10^10)
  • @ypercube: Python 通过提供pow(a,b,n)(等于(a**b)%n,但速度更快)使其变得非常简单。

标签: python biginteger


【解决方案1】:

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

相反,考虑使用pow 的“三参数”形式来计算以特定基数为模的幂,您会发现问题要容易得多。

【讨论】:

  • 好的很好,谢谢大家,得到了mod的解决方案:)
【解决方案2】:

我能够在 Python 3.2 上进行测试

print(SelfPowers(10000))

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

编辑:您似乎想使用1000?在这种情况下,升级到 Python 3 就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 2019-05-16
    • 1970-01-01
    相关资源
    最近更新 更多