I found an interesting problem on https://www.codewars.com/kata/53c93982689f84e321000d62:
~~~if-not:java
You have to code a function **getAllPrimeFactors** wich take an integer as parameter and return an array containing its prime decomposition by ascending factors, if a factors appears multiple time in the decomposition it should appear as many time in the array. 

exemple: `getAllPrimeFactors(100)` returns `[2,2,5,5]` in this order. 

This decomposition may not be the most practical. 

You should also write **getUniquePrimeFactorsWithCount**, a function which will return an array containing two arrays: one with prime numbers appearing in the decomposition and the other containing their respective power. 

exemple: `getUniquePrimeFactorsWithCount(100)` returns `[[2,5],[2,2]]`

You should also write **getUniquePrimeFactorsWithProducts** an array containing the prime factors to their respective powers. 

exemple: `getUniquePrimeFactorsWithProducts(100)` returns `[4,25]`
~~~
~~~if:java
You have to code a function **getAllPrimeFactors** wich take an integer as parameter and return an array containing its prime decomposition by ascending factors, if a factors appears multiple time in the decomposition it should appear as many time in the array. 

exemple: `getAllPrimeFactors(100)` returns `[2,2,5,5]` in this order. 

This decomposition may not be the most practical. 

You should also write **getUniquePrimeFactorsWithCount**, a function which will return an array containing two arrays: one with prime numbers appearing in the decomposition and the other containing their respective power. 

exemple: `getUniquePrimeFactorsWithCount(100)` returns `[[2,5],[2,2]]`

You should also write **getPrimeFactorPotencies** an array containing the prime factors to their respective powers. 

exemple: `getPrimeFactorPotencies(100)` returns `[4,25]`
~~~

Errors, if:

* `n` is not a number
* `n` not an integer 
* `n` is negative or 0 

The three functions should respectively return `[]`,  `[[],[]]` and `[]`. 

Edge cases: 

* if `n=0`, the function should respectively return `[]`, `[[],[]]` and  `[]`.
* if `n=1`, the...

I tried it in Python, but could not do it. Can you solve it?
def getAllPrimeFactors(n):
    if n == 0: return []
    elif n == 1: return [1]
    elif type(n) != int: return errora
    elif n < 0: return errora
    allfacts = []
    current = 2
    n_copy = n
    while current <= n:
        if n_copy % current == 0:
            allfacts.append(current)
            n_copy /= current
        else:
            current += 1
    return allfacts
    
    
def getUniquePrimeFactorsWithCount(n):
    if type(n) != int: return errorb
    elif n < 0: return errorb
    primes = []
    power = []
    listA = getAllPrimeFactors(n)
    for i in range(len(listA)):
        if listA[i] not in primes:
            primes.append(listA[i])
            power.append(1)
        else:
            power[-1] += 1
    return [primes, power]

def getUniquePrimeFactorsWithProducts(n):
    if type(n) != int: return errorc
    elif n < 0: return errorc
    listlist = getUniquePrimeFactorsWithCount(n)
    listc = []
    for i in range(len(listlist[0])):
        listc.append(listlist[0][i] ** listlist[1][i])
    return listc

errora = []
errorb = [[], []]
errorc = []