Comment cartographier efficacement les nombres premiers dans une plage ?

Barbara Streisand
Libérer: 2024-11-04 20:20:02
original
266 Les gens l'ont consulté

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
Copier après la connexion

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!

source:php.cn
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!