e 的渐近分数
作者:Andrei Osipov
https://projecteuler.net/problem=65
2 的平方根可以写成无限连分数。
√2 = 1 + 1 ______ 2 + 1 ______ 2 + 1 ______ 2 + 1 ______ 2 + ...
无限连分数可以写成 √2 = [1;(2)], (2) 表示 2 无限重复。类似地,√23 = [4;(1,3,1,8)]。
事实证明,平方根的连分数的部分值序列提供了最佳的有理逼近。让我们考虑 √2 的渐近分数。
1 + 1 ___ = 3/2 2 1 + 1 _________ = 7/5 2 + 1 / 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, ...
第 10 个渐近分数的分子中的数字之和为 1+4+5+7=17。
求 e 的连分数的第 100 个渐近分数的分子中的数字之和。
use v6; sub continued-fraction(@sequence, :$depth) { my $x = @sequence.shift; return 1 if $depth == 1; $x + 1.FatRat / continued-fraction :depth($depth - 1), @sequence } my @e = lazy gather { take 2; (1, $_, 1)».&take for 2,4 ... * }; say [+] continued-fraction(@e, depth => 100).numerator.comb;