View Single Post
En annen Python-variant:

Kode

def matmult(a, b):
    return (a[0] * b[0] + a[1] * b[2], a[0] * b[1] + a[1] * b[3], a[2] * b[0] + a[3] * b[2], a[2] * b[1] + a[3] * b[3])
    
def fib(n):
    a = (1,0,0,1)
    x = (1,1,1,0)
    while n > 0:
        if n & 1 == 1:
            a = matmult(a, x)
            
        n >>= 1    
        x = matmult(x, x)

    return a[0]
    
for i in xrange(100):
    print fib(i)
    
print fib(1000)
print fib(10000)
print fib(100000)