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

Susan Sarandon
Libérer: 2024-10-21 13:20:02
original
617 Les gens l'ont consulté

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

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

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

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