Factoriza el número, luego calcula el conjunto de factores de potencia para obtener la lista de divisores.
Su primer paso ahora es “¿Cuál es la forma más rápida de factorizar un número entero grande”, que es un tema divertido y detallado en sí mismo. Pertenece a su propia pregunta, y si busca en Quora encontrará que se le ha preguntado y respondido muchas veces. No hay una respuesta trivialmente simple, ya que cualquier respuesta correcta comienza con “Depende …” Los programas prácticos más rápidos para esta tarea con entradas generales implican una receta de diferentes algoritmos. Cuanto más sepa sobre la forma de su entrada, más podrá reducirla.
Genial, has completado el paso 1 y tienes los factores. Por ejemplo, 2,2,3,3 para su ejemplo de 36. Ahora encontrará el conjunto de potencia. Vea Power set – Rosetta Code para ver el código de ejemplo. Para cada elemento de conjunto de potencia queremos el producto y necesitamos eliminar duplicados. Hay una manera un poco mejor de hacer esto si tiene los factores en términos de pares [factor, exponente]. Produce la lista única en exactamente una pasada.
- ¿Hay algún buen algoritmo para clasificar los tonos de chino mandarín de un archivo de audio sin la necesidad de usar una red neuronal?
- Cómo convertir el ciclo while en declaraciones if
- ¿Cómo funciona el algoritmo de búsqueda de ruta de StarCraft II?
- ¿Qué es Algoritmo, Diagrama de flujo y Pseudocódigo en la planificación de programas antes de escribir?
- ¿Dónde debo comenzar si quiero aprender estructuras de datos y algoritmos?
Tenga en cuenta que el paso 2, crear los divisores a partir de los factores, es trivial en el tiempo en comparación con la búsqueda de los factores, a excepción de algunos casos patológicos, como los primarios, donde la factorización es trivial pero el número de divisores crece muy rápidamente. La optimización para devolver de manera eficiente cientos de miles a miles de millones de divisores es un problema diferente.