Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 30-01-2009 18:47:30

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 13 851

[Python] Crible d'Eratosthène

Méthode due à Barbichu.
J'y ai simplement ajouté le calcul du temps et l'affichage des nombres premiers.

#!/usr/bin/env python
# -*- 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'


Arx Tarpeia Capitoli proxima...

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
trente et un moins quinze
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums