计算更大数字的位数

Rav*_*ave 2 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
Run Code Online (Sandbox Code Playgroud)

the*_*met 5

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

现在,这是如何做到的:

l = str(2**1000)
digits = [int(digit) for digit in l]
print sum(digits)
Run Code Online (Sandbox Code Playgroud)

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

  • 为什么`math.pow`不如'2**1000`准确? (2认同)