Dans le cadre de l'apprentissage de Python, j'ai écrit du code pour trouver récursivement des nombres premiers.
Cette fois, j'ai utilisé un tamis Eratostenes.
Le tamis d'Eratosthène est un algorithme simple pour trouver tous les nombres premiers en dessous d'un entier spécifié. Il porte ce nom parce qu'il aurait été inventé par l'ancien scientifique grec Elatostines. (Wikipédia "[Eratostenes Sieve](https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%" 86% E3% 83% 8D% E3% 82% B9% E3% 81% AE% E7% AF% A9)
Ci-dessous le code.
Sieve.py
array = [i for i in range(2, 100)] #Plage de valeurs que vous souhaitez rechercher
prime = [2] #Liste des nombres premiers
def Sieve(array, prime): #Tamis Eratostenes
newArray = []
for i in array:
if i%prime[-1] != 0:
newArray.append(i)
prime.append(newArray[0]) #Ajouter un nombre premier à la liste
if array[-1] == prime[-1]:
return prime #Renvoie une liste de nombres premiers
return Sieve(newArray, prime)
Prime = Sieve(array, prime)
print(Prime) #production
En conséquence, les nombres premiers de 2 à ~~ 100 ~~ 99 ont été trouvés (corrigé le 22 décembre 2019).
production
[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]
Il semble qu'il existe une limite supérieure pour traiter la récurrence en Python. La limite supérieure et la manière de la modifier ont été expliquées dans cet article.
Merci pour votre visite. Si vous avez des suggestions, veuillez les laisser dans la section commentaires.
Recommended Posts