def solve_pell(d): '''x**2-d*y**2=1 の最小解を求める. √dの第i次連分数近似を p_i/q_i とすると, (pi, pi)で方程式の解になるものが最小(らしい).''' for frac in convergents(cont_frac_sqrt(d)): p = frac.numerator q = frac.denominator if p**2 - d*q**2 == 1: return (p, q)
def main(): for i, frac in enumerate(convergents(cont_frac_of_e())): if i == 99: break return digit_sum(frac.numerator)