Énumération des nombres premiers et jugement des nombres premiers en Python

Je l'utilise moi-même de temps en temps, donc je le posterai sur Qiita (´ ・ ω ・ `)

«primes (x)» est une méthode pour stocker les nombres premiers inférieurs à «x» dans la liste. Le "tamis Eratostenes" standard est utilisé comme algorithme. Je pense que le point qui n'utilise pas «filter», etc. peut être considéré comme un appareil.

Ensuite, ʻis_prime (x) est une méthode pour déterminer si l'entier x` est un nombre premier. L'algorithme est toujours la "division d'essai" standard. Cependant, nous essayons d'améliorer l'efficacité en utilisant des nombres pseudo-premiers (nombres qui ne sont pas divisibles par 2, 3 ou 5).


import math

#Renvoie une liste de nombres premiers supérieurs ou égaux à 0 et d'entiers x "inférieurs à"
def primes(x):
    if x < 2: return []

    primes = [i for i in range(x)]
    primes[1] = 0 #1 n'est pas un nombre premier

    #Tamis Eratostenes
    for prime in primes:
        if prime > math.sqrt(x): break
        if prime == 0: continue
        for non_prime in range(2 * prime, x, prime): primes[non_prime] = 0
    
    return [prime for prime in primes if prime != 0]


#Détermine si l'entier x est un nombre premier
def is_prime(x):
    if x < 2: return False #Il n'y a pas de nombres premiers inférieurs à 2
    if x == 2 or x == 3 or x == 5: return True # 2,3,5 est un nombre premier
    if x % 2 == 0 or x % 3 == 0 or x % 5 == 0: return False # 2,3,Les multiples de 5 sont des nombres composites

    #Scission d'essai:Pseudo nombre premier(Nombres non divisibles par 2, 3 ou 5)Se diviser les uns après les autres
    prime = 7
    step = 4
    while prime <= math.sqrt(x):
        if x % prime == 0: return False

        prime += step
        step = 6 - step
    
    return True


if __name__ == '__main__':
    print(primes(30)) #=> [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

    ls = [x for x in range(30) if is_prime(x)]
    print(ls) #=> [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

Recommended Posts

Énumération des nombres premiers et jugement des nombres premiers en Python
Premier nombre 2 en Python
Algorithme en Python (jugement premier)
Générateur principal infini en Python3
Énumération des nombres premiers sur une ligne
Projet Euler # 7 "1000 1er nombre premier" en Python
Jugement des nombres premiers par Python
Jugement des nombres premiers avec Python
Jugement des nombres premiers avec python
Nombre premier en Python
[Python 3] Décomposition des facteurs premiers en 14 lignes
Pile et file d'attente en Python
Implémentation de Fibonacci et des nombres premiers (python)
Module de débogage et de test Python
Unittest et CI en Python
Définir le test python dans jenkins
Veriloggen et cocotb sont utilisés pour concevoir et tester Verilog en Python uniquement.
J'ai essayé de programmer le test du chi carré en Python et Java.
Reconnaissance des nombres dans les images avec Python
Paquets qui gèrent le MIDI avec Python midi et pretty_midi
Différence entre list () et [] en Python
Différence entre == et est en python
Afficher les photos en Python et html
Algorithme de tri et implémentation en Python
Manipuler des fichiers et des dossiers en Python
À propos de Python et Cython dtype
[python] week1-3: Type de nombre et opération
Générateur de nombres premiers par Python
Affectations et modifications des objets Python
Vérifiez et déplacez le répertoire en Python
Chiffrement avec Python: IND-CCA2 et RSA-OAEP
Ecrire le code de test du sélénium en python
Hashing de données en R et Python
Synthèse de fonctions et application en Python
Test statistique (test multiple) en Python: scikit_posthocs
Exporter et exporter des fichiers en Python
Etude, jeu de numérotation avec Python
Inverser le pseudonyme plat et le katakana en Python2.7
Lire et écrire du texte en Python
[GUI en Python] Menu PyQt5 et barre d'outils-
Créer et lire des paquets de messages en Python
Un programme qui détermine si un nombre entré en Python est un nombre premier
[Pytest] [mock] Les débutants en développement Web ont résumé le test unitaire et simulé en python.
Chevauchement d'expressions régulières en Python et Java
Différence d'authenticité entre Python et JavaScript
Notes utilisant cChardet et python3-chardet dans Python 3.3.1.
Test de stress avec Locust écrit en Python
Les modules et packages en Python sont des "espaces de noms"
Évitez les boucles imbriquées en PHP et Python
Projet Euler # 3 "Maximum Prime Factors" en Python
Différences entre Ruby et Python dans la portée
différence entre les instructions (instructions) et les expressions (expressions) en Python
Valeurs authentiques et vecteurs propres: Algèbre linéaire en Python <7>
Ecrire le test dans la docstring python
Module d'implémentation de file d'attente et Python "deque"
Graphique à lignes pliées et ligne d'échelle en python
Différences entre la syntaxe Python et Java
Vérifier et recevoir le port série en Python (vérification du port)
nombre premier