欧拉计划 65

2的平方根可以写作无限连分数:

这个无限连分数可以写作, √2 = [1;(2)], (2) 表示2无限循环出现。类似的,√23 = [4;(1,3,1,8)]。

事实证明平方根的连分数序列提供了最好的有理数近似值。让我们考虑√2 的收敛项:

因此 √2 的收敛项中的前十项是:

1, 3/2, 7/5, 17/12, 41/29, 99/70, 239/169, 577/408, 1393/985, 3363/2378, …
更令人惊奇的是一个重要的数学常数:
e = [2; 1,2,1, 1,4,1, 1,6,1 , … , 1,2k,1, …].

e 的收敛项序列中的前十项是:

2, 3, 8/3, 11/4, 19/7, 87/32, 106/39, 193/71, 1264/465, 1457/536, …

其中第十项的分子各位数之和是1+4+5+7=17.
找出 e 的收敛项序列中第100项的分子上各位之和。

continued_fractions = []
for k in range(33):
    continued_fractions.extend([1, 2 * (k + 1), 1])
numerator = 0
denominator = 1
for f in continued_fractions[::-1]:
    numerator = f * denominator + numerator
    numerator, denominator = denominator, numerator
numerator = numerator + 2 * denominator
numerator_sum = 0
while numerator:
    numerator_sum += numerator % 10
    numerator //= 10
print(numerator_sum)

你可能感兴趣的:(欧拉计划)