python - 计算一个较大数字的位数

标签 python math

我目前正在尝试 Project Euler,其中一个问题是计算 2^1000,并计算位数。我可以很容易地计算 2^15,但 2^1000 的问题是当我计算它时,它以科学记数法给出,所以很难对数字求和。

import math

def power(x):
    y_p=1000*math.log(x,10.0)
    y=math.pow(10,y_p)
    return y

if __name__=="__main__":

    ans=power(2)
    a=str(ans)
    print a
    sum=0

    for i in a:
       if i == ".":
          print "encountered ."
       elif i == "e":
          break
       else:
          sum=sum+int(i)

    print sum

最佳答案

要在 Python 中计算 2^1000,请使用 2**1000。使用 math.logmath.pow 等浮点函数可能会得到不准确的结果。

现在,这是如何做到的:

l = str(2**1000)
digits = [int(digit) for digit in l]
print sum(digits)

第一行将数字转换为以 10 为基数表示的字符串。第二行迭代字符并将字符串转换为数字列表。第三个打印他们的总和。

关于python - 计算一个较大数字的位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9055248/

相关文章:

python - [ orth , pos , tag , lema 和 text ] 的 spaCy 文档

python - 侧面带有 2D 直方图的 3D 散点图

c# - 如何判断一个点是在线的右侧还是左侧

python - 如何使用 cvxopt 进行带约束的均值方差优化?

java - 查找数字中连续一位的最大数量(Java)

python - DRF 中的推送通知

python - lark : Parsing : Implementing import file?

java - 失去了精度。我应该如何处理这个问题?

python - Django:ModelForm 未绑定(bind)到 request.POST

iphone - IOS中UI实现查询