Maison >développement back-end >Tutoriel Python >Comment créer un générateur de nombres premiers infinis efficace en Python ?

Comment créer un générateur de nombres premiers infinis efficace en Python ?

DDD
DDDoriginal
2024-12-19 12:32:09235parcourir

How to Create an Efficient Infinite Prime Number Generator in Python?

Comment implémenter un générateur infini efficace de nombres premiers 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.

La solution proposée : trois fonctions de tamis optimisées

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é.

erat2a

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

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 %.

Résultats des tests

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!

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