Maison  >  Article  >  développement back-end  >  Comment identifier efficacement les nombres premiers en Python : un guide étape par étape

Comment identifier efficacement les nombres premiers en Python : un guide étape par étape

Susan Sarandon
Susan Sarandonoriginal
2024-10-21 13:20:02618parcourir

How to Identify Prime Numbers Efficiently in Python: A Step-by-Step Guide

Identifier efficacement les nombres premiers en Python

Trouver une série de nombres premiers dans une plage donnée est une tâche de programmation courante. Pour y parvenir en Python, nous utilisons une séquence logique de boucles et d'instructions conditionnelles pour déterminer la primalité. Cependant, il est essentiel de noter que certaines tentatives initiales peuvent donner des résultats incorrects.

Correction du code d'identification par nombre premier

Une inspection du code d'origine révèle une faille critique : il imprime incorrectement les nombres impairs, pas les nombres premiers. Cette erreur provient d'une condition manquante qui identifie efficacement les nombres non premiers. Voici une description du problème :

<code class="python">for num in range(1, 101):
    for i in range(2, num):
        if num % i == 0:
            break
        else:
            print(num)
            break</code>

Pour corriger cela, nous devons vérifier explicitement si le nombre est divisible par un nombre compris entre 2 et lui-même. Si aucun diviseur n’est trouvé, c’est premier. Voici la version améliorée :

<code class="python">for num in range(2, 101):
    prime = True
    for i in range(2, num):
        if (num % i == 0):
            prime = False
    if prime:
        print(num)</code>

Optimisation du code pour l'efficacité

Pour améliorer les performances, il est recommandé de vérifier uniquement les diviseurs jusqu'à la racine carrée de la valeur donnée nombre. Si aucun diviseur n’est trouvé dans cette plage, elle peut être considérée comme première. Cette optimisation réduit considérablement le nombre d'itérations requises :

<code class="python">import math

for num in range(2, 101):
    if all(num % i != 0 for i in range(2, int(math.sqrt(num)) + 1)):
        print(num)</code>

Affinements supplémentaires

Le code peut être rendu encore plus efficace en sélectionnant uniquement des nombres impairs puisque les nombres premiers sont plus grands. plus de 2 sont toujours impairs. Le code révisé :

<code class="python">import math
print(2)
for num in range(3, 101, 2):
    if all(num % i != 0 for i in range(3, int(math.sqrt(num)) + 1, 2)):
        print(num)</code>

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