"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo encontrar factores de un número de manera eficiente en Python?

¿Cómo encontrar factores de un número de manera eficiente en Python?

Publicado el 2024-11-08
Navegar:551

How to Find Factors of a Number Efficiently in Python?

Encontrar factores de un número de manera eficiente en Python

Determinar los factores de un número es una tarea común en varios dominios, y Python ofrece múltiples formas eficientes de lograrlo.

Un enfoque optimizado implica utilizar la función reduce de Python junto con la comprensión de listas. Esta solución concisa encuentra eficazmente todos los factores de un número determinado.

from functools import reduce

def factors(n):
    return set(reduce(
        list.__add__,
        ([i, n//i] for i in range(1, int(n**0.5)   1) if n % i == 0)))

Justificación:

  • La expresión del generador ([i, n//i] para i en el rango(1, int(n**0.5) 1) si n % i == 0)) produce pares de factores [factor1, factor2] donde factor1 es menor o igual a la raíz cuadrada del número n. Esta optimización reduce el tiempo de cálculo.
  • La función de reducción concatena las listas de pares en una sola lista, mientras que la estructura de datos establecida elimina cualquier duplicado que pueda ocurrir en el caso de cuadrados perfectos.
  • Para un número n, la lista de comprensión solo necesita llegar hasta la raíz cuadrada de n porque el número en sí siempre se puede emparejar con 1 como factor.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3