function PrimeDecomposition( n )
    local f = {}

    if IsPrime( n ) then
        f[1] = n
        return f
    end

    local i = 2
    repeat
        while n % i == 0 do
            f[#f+1] = i
            n = n / i
        end

        repeat
            i = i + 1
        until IsPrime( i )       
    until n == 1

    return f
end