Maison  >  Article  >  développement back-end  >  Comment imprimer correctement des séries de nombres premiers en Python ?

Comment imprimer correctement des séries de nombres premiers en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-21 13:16:02525parcourir

How to Correctly Print Prime Number Series in Python?

Impression d'une série de nombres premiers en Python

Pour imprimer une série de nombres premiers dans une plage spécifiée, une approche courante consiste à parcourir le plage et vérifiez si chaque nombre est premier. Cependant, le code fourni, qui tente d'accomplir cela, génère une série de nombres impairs au lieu de nombres premiers. Examinons le problème et trouvons une solution optimale.

Le code fourni parcourt la plage (1, 101) et, pour chaque nombre, vérifie la divisibilité jusqu'au nombre lui-même. C'est là que réside l'erreur. Les nombres premiers ne sont divisibles que par 1 et eux-mêmes, vous devez donc vérifier uniquement les nombres de 2 au nombre lui-même.

Le code corrigé devrait être le suivant :

<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>

Ce code révisé initialise un indicateur booléen premier à True pour chaque nombre et vérifie les nombres jusqu'au nombre lui-même, garantissant ainsi une identification correcte du nombre premier.

Alternativement, une approche plus concise et pythonique serait :

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

Ce code utilise une expression génératrice dans la fonction all() pour déterminer si le nombre est divisible par n'importe quel nombre de 2 à lui-même, en s'excluant. Si de tels diviseurs n'existent pas, le nombre est imprimé comme un nombre premier.

Pour une efficacité accrue, vous ne pouvez vérifier que les diviseurs jusqu'à la racine carrée du nombre. En effet, si un nombre a un facteur plus grand, il doit également avoir un facteur correspondant plus petit. Le code ci-dessous intègre cette optimisation :

<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>

Enfin, pour améliorer encore l'efficacité, vous pouvez ignorer la vérification des nombres pairs puisque les nombres premiers supérieurs à 2 sont toujours impairs. Le code suivant reflète cette optimisation :

<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