Maison  >  Article  >  développement back-end  >  Comment l’efficacité des différentes méthodes de factorisation première se compare-t-elle en Python ?

Comment l’efficacité des différentes méthodes de factorisation première se compare-t-elle en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-14 17:07:02582parcourir

How does the efficiency of different prime factorization methods compare in Python?

Python : factorisation première efficace

Question 1 :
Comprendre un programme Python existant qui calcule le plus grand facteur premier de 600851475143 et exploration d'une factorisation première alternative méthodes.

Réponse :
Le code que vous avez trouvé en ligne fonctionne efficacement en divisant à plusieurs reprises le nombre par son plus petit facteur premier jusqu'à ce qu'il atteigne le plus grand facteur premier. Bien que le nombre ne soit pas divisible par le facteur premier actuel, il continue d'incrémenter le facteur premier.

Une autre méthode consiste à utiliser une approche par force brute :

<code class="python">def prime_factors(n):
    i = 2
    factors = []
    while i * i <= n:
        if n % i:
            i += 1
        else:
            n //= i
            factors.append(i)
    if n > 1:
        factors.append(n)
    return factors</code>

Cette fonction teste chaque nombre de 2 à la racine carrée du nombre donné pour déterminer ses facteurs premiers. Cependant, cette méthode est moins efficace pour les grands nombres.

Question 2 :
Comparaison de l'efficacité des deux extraits de code fournis.

Réponse :
Le deuxième extrait de code, qui incrémente simplement un compteur, est beaucoup plus lent car il vérifie chaque entier jusqu'à une certaine valeur, alors que le premier extrait de code vérifie uniquement le plus petit facteur premier et le divise immédiatement, éliminant efficacement ce facteur.

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!

Déclaration:
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