Generate a Python program that has the following intention:

The intention of this program is to find all the prime factors of a given number. The function p1(n) takes an integer n as input and returns a list of all the prime factors of n.

The program uses the fact that if a number n is evenly divisible by i, then i is not a prime factor of n. So the program starts with i = 2 and checks if n is evenly divisible by i. If it is not, then i is added to the list of factors. The program then continues to check if n is evenly divisible by the next number i + 1 and so on, until it finds the smallest number that evenly divides n.

Once a prime factor is found, the program recursively calls p1 on the quotient of n and the factor, to find the remaining factors. The function // is the integer division operator in Python, which returns the floor division of two numbers.

The program continues until either all factors are found or i exceeds the square root of n (assuming that the largest prime factor of n is less than the square root of n). In the latter case, n is added to the list of factors, as it is not divisible by any smaller number.

The program then returns the list of factors.