Générateur de nombres premiers en Python
Ce code Python vise à générer des nombres premiers, mais il nécessite quelques ajustements pour une fonctionnalité optimale.
Le code corrigé ci-dessous :
import math
def main():
count = 3
while True:
is_prime = True
for x in range(2, int(math.sqrt(count) + 1)):
if count % x == 0:
is_prime = False
break
if is_prime:
print(count)
count += 1
Problèmes et Corrections :
-
Problème d'impression :Le code original imprimé compte même s'il n'était pas premier. C'était parce qu'il imprimait sur la condition if count % x != 0, ce qui ne garantissait pas la primalité. Le code corrigé s'imprime uniquement lorsque is_prime est True.
-
Contrôle de boucle : L'instruction continue dans le code d'origine a ignoré l'itération de la boucle lorsque la condition était remplie, mais elle aurait dû terminer l'itération en utilisant pause pour traiter le numéro suivant.
-
Efficacité : Vérifier manuellement la divisibilité de chaque numéro peut être inefficace pour les grands nombres. Le code corrigé utilise le Tamis d'Eratosthène, bien plus efficace pour la génération prime.
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