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

Linda Hamilton
Libérer: 2024-10-21 13:16:02
original
522 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!