Maison > développement back-end > Tutoriel Python > Comment puis-je générer efficacement des nombres premiers en Python ?

Comment puis-je générer efficacement des nombres premiers en Python ?

Susan Sarandon
Libérer: 2024-11-13 04:07:49
original
634 Les gens l'ont consulté

How can I generate prime numbers in Python efficiently?

Générateur de nombres premiers simple en Python avec logique améliorée

Le code donné vise à générer des nombres premiers mais rencontre des problèmes. Voici une élaboration des problèmes et un code révisé avec des améliorations :

Problèmes et solutions :

  • condition incorrecte pour l'impression des amorces : En remplaçant if count % x != 0 par if isprime, nous imprimons les nombres premiers uniquement.
  • gestion incorrecte de la boucle : L'utilisation de break au lieu de continue nous permet de terminer la boucle lorsqu'un facteur non premier est rencontré.
  • plage de test : L'extension de la plage à int(math.sqrt(count) 1) garantit des tests approfondis.
  • optimisé Tamis d'Eratosthène : Pour une génération plus efficace, le code intègre l'algorithme Sieve of Eratosthenes (extrait de code séparé fourni pour référence).

Voici le script Python révisé :

import math

def main():
    count = 3

    while True:
        isprime = True

        for x in range(2, int(math.sqrt(count) + 1)):
            if count % x == 0:
                isprime = False
                break

        if isprime:
            print(count)

        count += 1
Copier après la connexion

Tamis optimisé de Ératosthène :

def gen_primes():
    D = {}
    q = 2

    while True:
        if q not in D:
            yield q
            D[q * q] = [q]
        else:
            for p in D[q]:
                D.setdefault(p + q, []).append(p)
            del D[q]

        q += 1
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!

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