pell方程

x- n y2 = 1

这种形式的方程称为二元二次不定方程为佩尔方程。

若 n是完全平方数,则这个方程式只有平凡解。对于其余情况,拉格朗日证明了佩尔方程总有非平凡解。而这些解可由 n−−√n 的连分数求出。

def solve_pell(_wl):
    cf = continued_fraction(sqrt(_wl))
    conv = cf.convergents()
    for _ in conv:
        numer, denom = _.numerator(), _.denominator()
        if numer ^ 2 - _wl * denom ^ 2 == 1:
            return ZZ(numer), ZZ(denom)


def solve_pell(N, numTry = 100):  #(来自La佬)
    cf = continued_fraction(sqrt(N))
    for i in range(numTry):
        denom = cf.denominator(i)
        numer = cf.numerator(i)
        if numer^2 - N * denom^2 == 1:
            return numer, denom
    return None, None

N = 
solve_pell(N)

 

 

posted @ 2021-12-10 20:32  一梦红阳  阅读(408)  评论(0)    收藏  举报