Maison > développement back-end > Tutoriel Python > Quel est le moyen le plus rapide de trouver tous les nombres premiers inférieurs à un nombre N donné en Python ?

Quel est le moyen le plus rapide de trouver tous les nombres premiers inférieurs à un nombre N donné en Python ?

Patricia Arquette
Libérer: 2024-12-21 09:28:09
original
862 Les gens l'ont consulté

What's the Fastest Way to Find All Prime Numbers Below a Given Number N in Python?

Le moyen le plus rapide de lister tous les nombres premiers inférieurs à N

En Python, il existe plusieurs algorithmes efficaces pour lister tous les nombres premiers inférieurs à un nombre N donné L'un des algorithmes les plus rapides est le tamis d'Atkin, qui utilise une combinaison d'opérations de tamisage et d'arithmétique pour identifier les nombres premiers.

Autres algorithmes efficaces

En plus du tamis d'Atkin, d'autres algorithmes efficaces pour lister les nombres premiers incluent :

  • Algorithme de Rho
  • Algorithme de Sundaram
  • primalité AKS test
  • Test de primalité de Miller-Rabin

Choisir le bon algorithme

Le meilleur algorithme pour votre application spécifique dépendra de la taille de N et la vitesse souhaitée. Pour de petites valeurs de N, le Tamis d'Eratosthène est un choix simple et efficace. Pour des valeurs de N plus grandes, le Sieve d'Atkin ou l'un des autres algorithmes mentionnés ci-dessus peuvent être plus adaptés.

Voici une implémentation Python du Sieve d'Atkin :

def sieve_of_atkin(limit):
    """Return a list of prime numbers up to the given limit."""

    # Create a list of all integers up to the given limit.
    numbers = list(range(limit + 1))

    # Mark 0 and 1 as non-prime.
    numbers[0] = numbers[1] = 0

    # Iterate over all odd numbers up to the square root of the limit.
    for i in range(3, int(limit**0.5) + 1, 2):

        # If i is prime, mark all multiples of i as non-prime.
        if numbers[i]:
            for j in range(i * i, limit + 1, i * 2):
                numbers[j] = 0

    # Return the list of prime numbers.
    return [number for number in numbers if number]
Copier après la connexion

Considérations supplémentaires

  • Pour des valeurs de N encore plus grandes, il peut être nécessaire d'utiliser un algorithme plus sophistiqué, tel que comme le Tamis de Sundaram ou le tamis d'Ératosthène.
  • Le choix de l'algorithme peut également être influencé par d'autres facteurs, comme la disponibilité de la mémoire et la précision souhaitée.

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