我目前正在尝试 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.log
和 math.pow
等浮点函数可能会得到不准确的结果。
现在,这是如何做到的:
l = str(2**1000)
digits = [int(digit) for digit in l]
print sum(digits)
第一行将数字转换为以 10 为基数表示的字符串。第二行迭代字符并将字符串转换为数字列表。第三个打印他们的总和。
关于python - 计算一个较大数字的位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9055248/