• Aucun résultat trouvé

Nombres premiers

N/A
N/A
Protected

Academic year: 2022

Partager "Nombres premiers"

Copied!
2
0
0

Texte intégral

(1)

Nombres premiers

Cet exercice ainsi que sa correction est proposé parPhilippe Moutou. Il enseigne au lycée Henri IV à Paris.

1 Exercice

Écrire une fonctionpremiers(n)qui détermine la liste des nombres premiers inférieurs ou égaux à un entier n donné.

Selon la méthode du crible dʼÉratosthène, on peut supprimer dʼune liste contenant les entiers entre 2 et n tous les multiples de 2, puis supprimer tous les multiples du nombre suivant 2 (sauf erreur, cela doit être 3), etc.

2 Corrigé

La méthode du crible dʼÉratosthène est relativement simple à mettre en oeuvre : on parcourt la liste des nombres entiers inférieurs ou égaux ànautant de fois quʼil est possible en supprimant les multiples du premier nombre non supprimé. La liste de départ est obtenue aveclist(range(2,n+1)) qui contient[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] lorsquen=12. La suppression des mul- tiples dek=2(kindique le premier nombre non supprimé) sʼobtient en redéfinissant la listeprem, par lʼinstructionprem=[p for p in prem if p<=k or p%k!=0]qui opère le trip<=k or p%k!=0 signifiant : soitpest premier (inférieur au dernier nombre non supprimé), soitpnʼest pas divisible

park. On recommence lʼopération après avoir choisi la nouvelle valeur dekaveck=prem[prem.index(k)+1].

On arrive ainsi à[2, 3, 5, 7, 11]après lʼavoir parcourue pourk=2etk=3.

Le prochain nombre non supprimé estk=5, mais on nʼa pas besoin de supprimer ses multiples car le premier qui nʼa pas déjà été supprimé est5×5, un nombre supérieur àn=12. Pour cette raison, on arrête la procédure quandkatteint ou dépasse

n.

from math import * def premiers(n):

prem=list(range(2,n+1)) k=2

nRacine=sqrt(n) while k<nRacine:

prem =[p for p in prem if p<=k or p%k!=0]

k=prem[prem.index(k)+1] # nouveau nombre premier return prem

Liste_premiers=premiers (100)

print("Plus grand premier =",Liste_premiers [-1]) print("Nombre de premiers =",len(Liste_premiers ))

1

(2)

print("Liste premiers :",Liste_premiers)

Il y a sans doute de nombreuses autres façons de générer cette liste. Nous en resterons à celle-là qui est assez concise et efficace. Sur la calculatrice, la plus grande partie de la liste est cachée à lʼaffichage. Il est possible de la faire défiler avec les flèches directionnelles. On peut aussi mieux penser lʼaffichage en mettant à profit les 30 caractères affichés par ligne : un nombre par ligne devrait permettre dʼavoir un affichage correct (mais est-ce utile ?) jusquʼau plus grand nombre pre- mier à 30 chiffres…

2

Références

Documents relatifs

Pour l'unicité, on raisonne comme pour la division euclidienne en faisant jouer à la valuation le rôle du degré.. Pour l'existence, on raisonne par récurrence

[r]

Let 1) be a Cartan subalgebra of^ and let W be the Weyl group. One says that a weight fi G b* ls regular if its Weyl group stabilizer IV^ is trivial, and singular otherwise.

Prenons une fonction w(x) &gt; 0 paire et continue ; nous allons voir que l'existence d'une fonction croissante p ( t ) = 0(1) ayant les propriétés (0.3) et (0.4) (voir

On étudie plus particulièrement la méthode d'interpolation par les espaces de moyenne et l'on obtient la transposition de certains résultats que Lions et Peetre (voir [12] et [13])

KAMTHAN, A note on the maximum term and the rank of an entire function represented by Dirichlet series; Math.. KAMTHAN, On the maximum term and its rank of an entire

Construction d'une suite symétrique de densité nulle {\}, telle telle que ^^j forme un système total sur tout segment... Nous allons construire ^\^ de façon que |les deux propo-

— A étant une suite négative de densité maxi- mum D, et de densité moyenne supérieure D', Q un ouvert connexe contenant le cercle |z[&lt;itD*, toute fonction de ëû(A)