What is the intention of the program below?
```
def p1(n):
    if n == 1:
        return []

    i = 2
    while i < (int(n**0.5) + 1):
        if n % i == 0:
            return [i] + p1(n // i)
        i += 1

    return [n]
```