Jugement des nombres premiers par Python

J'ai essayé d'implémenter un jugement de nombres premiers 100 ou moins en utilisant python de 3 manières. Il montre également le temps nécessaire pour chacun.

① N'utilisez pas les fonctions intégrées autres que l'impression (hors temps)


import time
n = 2

t1 = time.time()
while n <= 100:
    div = 0
    m = 1
    while m <= n:
        if n % m == 0:
            div += 1
        m += 1
    if div == 2:
        print(n)
    n += 1
time = time.time() - t1
print("time:{}".format(time))

Résultat d'exécution

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 0.007971048355102539

② Comment vérifier un par un

import time

def ma(n):
    sosu_list = []
    t1 = time.time()
    for n in range(2,n + 1):
        div = 0
        for m in range(1,n + 1):
            if n % m == 0:
                div = div + 1
        if div == 2:
            sosu_list.append(n)
    print(sosu_list)
            
t1 = time.time()
ma(100)
time = time.time() - t1
print("time:{}".format(time))

Résultat d'exécution [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] time:0.0027151107788085938

③ Tamis Eratostenes

import time

def eratosu(n):
        sosu_list = []
        false = []
        for i in range(2,n+1):
            if i not in false:
                sosu_list.append(i)
                for j in range(i*i,n+1,i):
                    false.append(j)
        return sosu_list
    
t1 = time.time()
print(eratosu(100))
time = time.time() - t1
print("time:{}".format(time))
            

Résultat d'exécution [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] time:0.0005650520324707031

En comparant le temps, ① et ② n'ont fondamentalement pas beaucoup changé. Cependant, la méthode (2) n'était pas stable car la vitesse était parfois proche de celle de (3). En comparaison, le résultat était que le programme (3) était le plus rapide de ceux-ci. C'est un algorithme appelé tamisage Eratostenes, mais c'est probablement parce qu'il était très efficace et que la quantité de calcul était faible (j'ai fait référence au wiki, donc je posterai un lien).

Même pour les programmes qui produisent les mêmes résultats, il est amusant d'essayer de les mettre en œuvre avec des idées différentes, alors j'aimerais continuer.

Wikipédia Eratostenes Sieve

Recommended Posts

Jugement des nombres premiers par Python
Jugement des nombres premiers avec Python
Jugement des nombres premiers avec python
Algorithme en Python (jugement premier)
Développement Python aidé par le test Jenkins-Unit
Test d'intégrité Python
Mémo de visualisation par Python
Traitement de la communication par Python
Test numpy Python Basic 8
Énumération des nombres premiers et jugement des nombres premiers en Python
Mémo du package de test Python
Réponse de Beamformer par python
test de coopération de balises python
modèle de test unitaire python
Reconnaissance vocale par Python MFCC
API Web EXE par Python
Programme de formation des nouveaux arrivants par Python
Paramétrage par le configurateur python
Pin python géré par conda
Extraction de mots-clés par MeCab (python)
Séparez les nombres par 3 chiffres (python)
Modèle Python pour Codeforces-test manuel-
Modèle de commutation de Markov par Python
Traitement d'image par python (Pillow)
Python lancé par des programmeurs C
Module de débogage et de test Python
Jugement de la plateforme (OS) par Python
Trier par date en python
Définir le test python dans jenkins
[Python] Tri itérable selon plusieurs conditions
Python
Extension du dictionnaire python par argument
AtCoder: Python: Papa, l'exemple de test.
Résumé de l'apprentissage automatique par les débutants de Python
Apprenez Python en dessinant (Turtle Graphics)
tester
Générateur de nombres premiers par Python
[Python] Exemple de test avec unittest2, simulé
Test de Dicky Fuller par des modèles statistiques
instruction SQL python Extraire par heure
Autoriser l'accès aux attributs à Python dict
Détermination du système d'exploitation par Makefile en utilisant Python
Sortie du journal de test unitaire avec python
Mémo d'automatisation de saisie par Python débutant
Ecrire le code de test du sélénium en python
Inspection PCR efficace par méthode de pool
Création d'un outil de test AtCoder pour Python
Test statistique (test multiple) en Python: scikit_posthocs
Mémo d'apprentissage de la planification des sections ~ par python ~
Comportement de python3 par le serveur de Sakura
100 Language Processing Knock Chapitre 1 par Python
Histoire d'approximation de puissance par Python
Blender 2.9, test de couleur de la lumière d'arrière-plan Python
Tri des fichiers par convention de dénomination à l'aide de Python
Explication du modèle d'optimisation de la production par Python
Obtenez des informations sur la propriété en grattant avec python
Python> dictionnaire> values ()> Obtenir toutes les valeurs à l'aide de values ()
[Python] Qu'est-ce qui est hérité par l'héritage multiple?
[Python] Test super facile avec instruction assert
Test de stress avec Locust écrit en Python