Maison >développement back-end >Tutoriel Python >Comment cartographier efficacement les nombres premiers dans une plage ?

Comment cartographier efficacement les nombres premiers dans une plage ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-04 20:20:02335parcourir

How to Efficiently Map Prime Numbers within a Range?

Mappage efficace des nombres premiers dans une plage

La détermination des nombres premiers dans une plage spécifiée est une tâche de programmation courante. Pour optimiser la consommation de mémoire pour cette tâche, nous recherchons un algorithme qui crée la structure de données la plus compacte qui représente les nombres premiers pour une plage donnée (1, N).

Algorithme proposé pour le mappage des plages premières

L'algorithme le plus efficace pour les tests généraux de primes est l'algorithme AKS. Cependant, pour des raisons pratiques dans une plage limitée, la variante suivante de l'algorithme classique O(sqrt(N)) peut fournir une solution efficace :

def isprime(n):
    if n == 2 or n == 3:
        return True
    if n % 2 == 0 or n % 3 == 0:
        return False
    # Check prime divisors of the form 6k - 1 and 6k + 1
    i = 5
    w = 2
    while i * i <= n:
        if n % i == 0:
            return False
        i += w
        w = 6 - w
    return True

Analyse de l'algorithme

Cet algorithme repose sur le fait que tous les nombres premiers supérieurs à 3 sont soit de la forme 6k - 1 ou 6k 1. En parcourant les diviseurs premiers potentiels dans ce modèle, l'algorithme identifie efficacement les nombres non premiers.

Considérations supplémentaires

Pour encore plus de vitesse, surtout lorsque la plage est limitée , la mise en œuvre d'un test pseudo-premier basé sur le petit théorème de Fermat peut être efficace. Cependant, cette approche a une limite de portée.

Optimisation des clés

L'optimisation la plus importante en. cet algorithme consiste à éliminer tous les nombres pairs comme nombres premiers potentiels. Cette optimisation réduit considérablement le nombre de vérifications requises, conduisant à des performances améliorées.

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