Ejemplo n.º 1
0
def naive(n):
    cnt = 0
    for i in xrange(1,n+1):
        for j in xrange(i,n+1):
            for k in xrange(j,n+1):
                a = (i+j)**2 + k**2
                b = (i+k)**2 + j**2
                c = (j+k)**2 + i**2
                x = min(a,b,c)
                if euler.isSquare(x):
                    cnt += 1
    return cnt
Ejemplo n.º 2
0
            f = convergent(seq)
            f = f.cancel()
            h = f.num
            k = f.den
            #print seq,f
            if h*h - v0*k*k == 1:
                return h,k
        i += 1    
        assert(i < 100)

#print continuedFraction(decimal.Decimal(61).sqrt())
#print getCF( decimal.Decimal(61).sqrt(), 22 )

lst = []
for i in range(1001):
    if not euler.isSquare(i):
        x,y = pell(i)
        print i,'-',x,'/',y
        lst.append((x,i))

print lst[max( range(len(lst)), key = lambda i : lst[i][0] )][1]

#print pell(61)

#maxv = 24
#seq = getCF( decimal.Decimal(61).sqrt() , maxv )
#print seq
#for i in range(1,maxv):
#    f = convergent(seq[:i])
#    h = f.num
#    k = f.den
Ejemplo n.º 3
0
    for i in xrange(1,n+1):
        for j in xrange(i,n+1):
            for k in xrange(j,n+1):
                a = (i+j)**2 + k**2
                b = (i+k)**2 + j**2
                c = (j+k)**2 + i**2
                x = min(a,b,c)
                if euler.isSquare(x):
                    cnt += 1
    return cnt

assert( naive(99) == 1975 )
assert( naive(100) == 2060 )
for i in xrange(1, 50):
    print i, naive(i)
        
def take(n, iterable):
    "Return first n items of the iterable as a list"
    return list(itertools.islice(iterable, n))

def squares():
    for i in itertools.count(1):
        yield i**2

for s in [7225]:
#for s in take(220, squares()):
    for u in itertools.takewhile(lambda x : x < s, squares()):
        v = s - u
        if euler.isSquare(v):
            print s, math.sqrt(u), math.sqrt(v)/2