Maison > développement back-end > Tutoriel Python > Comment trouver efficacement tous les facteurs d'un nombre en Python ?

Comment trouver efficacement tous les facteurs d'un nombre en Python ?

Patricia Arquette
Libérer: 2024-10-29 16:05:02
original
574 Les gens l'ont consulté

How to Find All Factors of a Number Efficiently in Python?

Trouver les facteurs d'un nombre en Python avec une efficacité maximale

Trouver tous les facteurs d'un nombre peut être une tâche difficile, en particulier lorsqu'il s'agit de grands nombres. Cet article explore une méthode efficace pour y parvenir dans Python 2.7.

Approche optimale utilisant la factorisation

Pour trouver tous les facteurs d'un nombre, la clé est de le décomposer dans ses facteurs premiers. Une fois que vous connaissez les facteurs premiers, trouver le reste des facteurs est simple.

L'extrait de code ci-dessous utilise cette approche :

<code class="python">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)))</code>
Copier après la connexion

Cette fonction accepte un nombre n et renvoie un ensemble contenant tous ses facteurs.

Comprendre l'algorithme

Le cœur de l'algorithme réside dans la compréhension [i, n//i] pour i dans la plage (1, int(sqrt(n)) 1) if n % i == 0. Cette partie génère des paires de facteurs.

Pour chaque nombre i de 1 à la racine carrée de n, il vérifie si n est divisible par je sans reste. Si tel est le cas, il inclut à la fois i et n//i dans la paire puisqu'ils sont tous deux facteurs de n.

Optimisation de la plage de recherche

La raison pour laquelle nous recherchons jusqu'à la racine carrée de n est que si i est un facteur de n, alors son facteur de paire n//i doit également être trouvé dans cette plage. Cela garantit que nous ne manquerons aucun facteur.

Gestion des doublons

Étant donné que les carrés parfaits ont des facteurs en double (par exemple, 4 a des facteurs 2 et 2), l'ensemble ( ...) à la fin de l'extrait de code supprime tous les doublons de la liste des paires. Cela garantit que nous obtenons un ensemble propre de facteurs uniques.

Exemple d'utilisation

Pour utiliser cette fonction, transmettez simplement le nombre que vous souhaitez factoriser comme argument :

<code class="python">result = factors(24)  # -> {1, 2, 3, 4, 6, 8, 12, 24}</code>
Copier après la connexion

Cela renverra un ensemble contenant tous les facteurs du nombre 24.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal