from math import isqrt

def frac(n):    
    a0 = isqrt(n)
    seq = []
    r, s = 0, 1
    seen = set()
    while not (r, s) in seen:
        seen.add((r, s))
        a = (r + a0) // s
        r = a * s - r
        s = (n - r**2) // s
        seq.append(a)
    return seq
    
from fractions import Fraction

def from_cfrac(xs):
    f = Fraction(xs[-2])
    for x in reversed(xs[:-2]):
        f = Fraction(x) + 1 / f
    return f

def solve(n):
    cf = frac(n)
    if len(cf) % 2 == 0:
        cf.extend(cf[1:])
    f = from_cfrac(cf)
    N, D = f.numerator, f.denominator
    return [N, D]
    

print(solve(61))

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: