Optimisation d'un générateur de nombres premiers simples en Python
Le code Python fourni vise à générer des nombres premiers mais nécessite des améliorations pour plus d'efficacité.
Problèmes avec le code d'origine :
Code amélioré :
import math def main(): count = 3 while True: isprime = True for x in range(2, math.ceil(math.sqrt(count)) + 1): if count % x == 0: isprime = False break if isprime: print(count) count += 1
Explication :
Génération Prime Avancée :
Pour une génération première plus efficace, le Tamis d'Eratosthène est recommandé. Voici une implémentation Python optimisée avec commentaires :
def gen_primes(): D = {} q = 2 while True: if q not in D: yield q for later in range(q * q, 1000000, q): D[later] = [q] else: for later in range(q + D[q][0], 1000000, q): D.setdefault(later, []).append(q) del D[q] q += 1
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!