Maison >développement back-end >Tutoriel Python >Comment créer un générateur de nombres premiers infinis efficace en Python ?
La tâche est de créer un générateur infini efficace de nombres premiers en Python. Le terme clé ici est « INFINI », ce qui implique que le générateur peut produire un flux infini de nombres premiers sans savoir combien seront consommés.
Le le code fourni offre trois fonctions Sieve optimisées : erat2, erat2a et erat3. Chaque fonction améliore progressivement la précédente en termes de rapidité et d'efficacité.
La fonction erat2a est une modification de la fonction erat2, qui n'est pas incluse ici. En optimisant le contrôle des bizarreries et en réduisant le nombre d'étapes effectuées pour les candidats, erat2a accélère la génération de 20 à 25 %.
erat3 améliore encore erat2a en tirant parti du fait que modulo 30 , tous les nombres premiers sauf 2, 3 et 5 donnent seulement huit nombres (1, 7, 11, 13, 17, 19, 23, 29). Cela permet à erat3 de filtrer plus efficacement les nombres impairs non candidats, ce qui entraîne une augmentation de vitesse de 35 à 40 %.
Les tests de performances sur différentes configurations matérielles démontrent les améliorations de performances :
Sur un serveur Atom 330 Ubuntu 9.10, erat3 surpasse erat2 et erat2a sur Python 2 et 3.
Sur un serveur domestique AMD Geode LX Gentoo, erat3 affiche à nouveau des gains de performances significatifs, surpassant les autres fonctions sur Python 2 et 3.
Ces optimisations dans les fonctions Sieve offrent un gain significatif avantage dans la génération efficace de nombres premiers, ce qui les rend adaptés à diverses applications mathématiques et informatiques.
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!