我目前正在尝试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)
在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表示中的字符串.第二行迭代字符并将字符串转换为数字列表.第三个打印出他们的总和.