예제 #1
0
    def test0064(self):
        from id_0064 import continued_fraction_sqrt

        sqrt2 = [1, 2, 2, 2]
        f = continued_fraction_sqrt(2)
        for i in range(len(sqrt2)):
            r = f.next()
            self.assertEqual(r, sqrt2[i])
        sqrt7 = [2, 1, 1, 1, 4, 1, 1, 1, 4]
        f = continued_fraction_sqrt(7)
        for i in range(len(sqrt7)):
            r = f.next()
            self.assertEqual(r, sqrt7[i])
예제 #2
0
#         return False
#     return True

def solves_equation(x, y, D):
    return x*x - 1 == D*y*y

if __name__ == '__main__':
    limit = 1000
    D = 1
    lst_D = []
    while True:
        if not is_square(D):
            lst_D.append(D)
        if D >= limit:
            break
        D += 1
    m = 0
    for D in lst_D:
        f = continued_fraction_sqrt(D)
        lst = []
        while True:
            r = f.next()
            lst.append(r)
            fr = generate_fraction(lst)
            if solves_equation(fr.numerator, fr.denominator, D):
                if fr.numerator > m:
                    m = fr.numerator
                    print "D = %d, x = %d, y = %d, m = %d" % (D, fr.numerator, fr.denominator, m)
                break
    print m