// Question 1

function r=puiss1(x,n)
    r=1
    for i=1:n
        r=x*r
    end
endfunction

// Question 2

function T=decompo2(n)
    T=[]
    while n > 0
        if modulo(n,2)==0
            n=n/2
            T=[T,0]
        else
            n=(n-1)/2
            T=[T,1]
        end
    end
endfunction

// Question 3

function L=puissListe2(x,k)
    L=[]
    for i=1:k
        L=[L,x]
        x=x*x
    end
endfunction

// Question 4

function r=puiss2(x,n)
    T=decompo2(n)
    k=length(T)
    L=puissListe2(x,k)
    
    r=1
    for i=1:k
       if T(i) == 1
           r=r*L(i)
       end 
    end
endfunction

// Question 5

// 12 = 8 + 4 = 2^3 + 2^2
// Il faut 3 multiplications pour calculer x^2 , x^4 et x^8
// Il faut 1 multiplication pour calculer x^4 * x^8
// Au total il faut 4 multiplications pour calculer x^12 avec la fonction puiss2 contre 11 pour la fonction puiss1

// Question 7

function r=puiss3(x,n)
    p=x
    r=1
    while n > 0
       if modulo(n,2)==1
            r=r*p
            n=(n-1)/2
        else
            n=n/2
        end
        p=p*x
    end
endfunction
