Project Euler 问题 #80 看起来很简单:
https://projecteuler.net/problem=80
使用十进制模块计算平方根到给定精度:
from decimal import Decimal, localcontext
def prob80():
total = 0
for x in range(1,100):
with localcontext() as ctx:
ctx.prec = 100
total+=sum([int(i) for i in str(Decimal(x).sqrt())[2:]])
return total
print prob80()
我返回 40308,据我了解,这与正确答案不符。对于前十个自然数的平方根的数字和,我返回:
0 475 441 0 472 470 397 463 0 456
这里的错误在哪里?我认为这归结为某种舍入误差,但我似乎无法解决。