El día de hoy estuve buscando con un algoritmo para obtener una lista de factores primos de un número y me tope con esté que me pareció muy interesante
def factorizar(n): #almacenamos los resultados #de la factorizacion en una lista l = [] num1 = n #mientras podamos dividir por 2 #el dos es un factor while num1 % 2 == 0: l.append(2) num1 /= 2 #ahora probamos con los impares #empezando por el 3 cuenta = 3 raiz = int(math.sqrt(num1)) while cuenta <= raiz and num1 > 1: if num1 % cuenta == 0: l.append(cuenta) num1 /= cuenta else: cuenta += 2 if num1 > 1: l.append(num1) return l
Créditos:
http://latecladeescape.com/recetas-algoritmicas/descomposicion-en-factores-primos.html