Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
- Accueil
- » Programmation
- » [Python] Crible d'Eratosthène
- » Répondre
Répondre
Résumé de la discussion (messages les plus récents en premier)
- yoshi
- 30-01-2009 19:47:30
Méthode due à Barbichu.
J'y ai simplement ajouté le calcul du temps et l'affichage des nombres premiers.
# -*- coding: latin-1 -*-
import time
def duree(hr,mnt,sec,tot):
tot=int(tot)
hr=tot/3600
tot=tot%3600
mnt=tot/60
sec=tot%60
return hr,mnt,sec,tot
def eratosthene(n,premiers):
nombres = []
for i in range(2,n+1):
nombres.append(True)
for i in range(2,n+1):
if nombres[i-2]:
premiers.append(i)
for j in range(2*i,n+1,i):
nombres[j-2] = False
return premiers
debut=time.time()
premiers = []
n=150000 # Affichage global. Ne pas aller au delà de cette limite ou modifier le mode d'affichage
eratosthene(n,premiers)
print
print"*** Crible d'Eratosthène : nombres premiers de 2 à",n,"****"
print premiers
print
terme = time.time()
temps = terme - debut
hr,mnt,sec,tot=0,0,0,temps
hr,mnt,sec,temps=duree(hr,mnt,sec,temps)
print 'Temps de fonctionnement du module',hr,'h',mnt,'min',sec,'s'