1/4 ÉPREUVE D`INFORMATIQUE À propos des nombres premiers

X Informatique PSI 2009 — Énoncé 1/4
ÉCOLEPOLYTECHNIQUE
CONCOURSD’ADMISSION2009 FILIÈRESPSIetPT
ÉPREUVED’INFORMATIQUE
(Durée :2heures)
L’utilisation descalculatricesn’estpasautorisée pourcette épreuve.
Lelangagedeprogrammationchoisiparle candidatdoitêtrespécifié entêtedelacopie.
Onattacheraunegrandeimportance àlaconcision,àlaclarté,etàlaprécision delarédaction.
Chaquepartiedu problèmeutilisedesnotionsintroduitesdanslespartiesprécédentes.
⋆ ⋆ ⋆
Àproposdesnombrespremiers
Leproblèmeportesurlesentiersnaturels,on utiliseralesentiersfournisparlelangagede
programmationchoisiensupposantqu’ils sontlesentiersnaturels.Parailleurs,étantdonnés
deuxentiers(naturels)aetb(b>0):
–Lanotationa/bdanslesprogrammesdésignelequotientdeladivisioneuclidiennedea
parb(parfoisappelée « divisionentière»).
–Unefonctionmod(a,b)(avec a≥0etb>0)donnelerestedeladivisioneuclidiennedea
parb.
–Unefonctionsqrt(a)donnelapartie entièredelaracine carrée dea(notée ⌊√a⌋).
Unentierbdiviseun entierasias’écritcommeleproduitbq.Dansce cas,on ditquebestun
diviseur(ou un facteur) dea.Onobserveraquepoursavoirsibdivisea, il suffitdevérifierque
mod(a,b)vaut0.
I.Nombrespremiers
Onrappellequ’un entiersupérieurouégalà2estpremiersietseulementsi il n’estdivisibleque
par1etparlui-même.
Question1.ÉcrirelafonctionestPremier(n)quiprend un entiern(n≥2)enargument,et
quirenvoie1sinestpremieret0sinon.Onappliqueradirectementladéfinition desnombres
premiersdonnée ci-dessus.
Onveutmaintenantcalculer touslesnombrespremiersinférieursàun entierdonnén.Onva
procéderselontroisméthodesdifférentes.
Téléchargé gratuitement sur www.Doc-Solus.fr .
X Informatique PSI 2009 — Énoncé 2/4
Question2.ÉcrirelafonctionpetitsPremiers(n)quiprend enargumentun entiern≥2,
etqui :
1.Range(dansl’ordre croissant) lesnombrespremiersinférieursouégauxàndansun tableau
global(ou prédéclaré)premier,quel’onsupposera assez grand.
2.Renvoielenombred’entiersrangésdanspremier.
Parexemplepourn=17,votrefonction devrarenvoyer7et remplirledébutdepremierainsi :
2 3 5 7 11 13 17 ···
LafonctionpetitsPremiersseralaplus simplepossible,destechniquesplusefficaces sontl’objet
desdeux questions suivantes.
Ilestassez faciledevoirque,pour testersiun entierimpairm(3≤m)estpremier, il suffitde
vérifierquemn’estdivisibleparaucun nombrepremiercomprisentre3et⌊√m⌋.
Question3.ÉcrireunenouvellefonctionpetitsPremiers2(n),quiagitcommepetitsPremiers(n)
maisestplusefficace.Cettenouvellefonctionappliqueralaremarque ci-dessus, lesnombres
premiersentre3et⌊√m⌋étantlusdansletableaupremierencoursderemplissage.
AuIIIesiècleavantJesus-Christ,Ératosthène,mathématicien,astronome etphilosopheinvente
uneméthode efficace pourénumérer touslesnombrespremiersinférieursàun entierdonnén.
Cetteméthode estconnuesouslenomde cribled’Ératosthène,quenousallonsdécrire entenant
comptedesmoyensdisponiblesàl’époque.
1.Surlesable,avec un bâton,dessinerun tableauxde(n−1)cases, lapremière casereprésente
2, lasuivante3etc.Ramasserun caillou, leposerà gauchedu tableau.
2.Avancerle cailloujusqu’àtrouverune casenon-rayée.Cette casereprésentel’entieri.
3.Ramasserun second caillouetlefaireavancerparsautsdeicases.Pourchacunedescases
surlesquelleslesecond caillousepose:
(a)Si lacase estdéjàrayée,nerienfaire.(b)Sinon,rayerlacaseavec lebâton.
4.Poserlesecond caillou dèsquel’onsort du tableau.Si l’étape(b)n’apasété effectuée,
c’estfini. Sinon,recommenceren2.
Lescasesnon-rayéesreprésententmaintenantlesnombrespremiers.Àtitred’exemple,voici
l’étatdu tableauau débutdel’étape4etpourun tableau de10 cases, lepremiercaillou
étant«•»:
•X X X X (i=2)
•X X X X X (i=3)
X•X X X X (i=5)
Lesnombrespremierstrouvés sontdonc2,3,5,7,11.
Question4.ÉcrirelafonctionpetitsPremiers3(n),quiagitcommepetitsPremiers(n)maisutilise
le cribled’Ératosthène.Ons’attachera à respecterl’espritde cettetechnique,eten particulierà
évitermultiplications,divisionset racinescarrées,difficilesàeffectuerpourlesmathématiciens
grecs.
Onrappellequetoutentiern(n≥2)peuts’écriredemanièreunique commeleproduit
n=p1p2···pk,oùp1≤p2≤... ≤pksontdesnombrespremiers.Onappelle cette écri-
tureladécompositionenfacteurspremiersden.Cettedéfinitionsuggèreun algorithmesimple
Téléchargé gratuitement sur www.Doc-Solus.fr .
X Informatique PSI 2009 — Énoncé 3/4
pourdécomposernenfacteurspremiers.Soitπ1,π2,... lasuitedesnombrespremiersenordre
croissant.
1.Poserm=n,poseri=1.
2.Sim=1,alorsterminer.
3.Siπidivisem,alorsπientredansladécomposition den.Poserm=m/πietalleren3.
4.Sinon,poseri=i+1etalleren2.
Enrésumé, l’algorithme,ditessaidesdivisionsrevientàdivisernparlesnombrespremiers.
Question5.Écrirelafonctionfactoriser(n)quiprend enargumentun entiern(n≥2),etqui
range(dansl’ordre croissantausenslarge)lesfacteurspremiersdendansun tableauglobal
facteur,supposéassez grand.Lafonctionfactoriserrenvoielenombred’entiersrangésdansfacteur.
Parexemplepourn=90,votrefonction devrarenvoyer4et remplirledébutdefacteurainsi :
2 3 3 5 ···
Iln’estpastrop difficiledevoirque,dansl’algorithmed’essaidesdivisions,on peut remplacerla
suitedesnombrespremiersparunesuiteplus simpleàcalculer,du momentque celle-cicommence
par2,soitcroissante,etcontiennelesnombrespremiers—parexemple,q1=2,qj+1=2j+1
(j≥1).Eneffet,un invariantdel’algorithme estque,àl’étape2,mn’estdivisibleparaucun des
entiersq1,... ,qi−1,etdoncparaucun nombrepremierstrictementinférieuràqi.Parconséquent,
siqidivisem(étape3),alorsqiestpremier.
Parailleurs,on peutlimiterlatailledesfacteursessayés.Lasuitedesqieststrictementcroissante,
tandisquemdécroit.Onfiniradoncparavoirq2
i>m.Dèslors,m,s’il n’estpaségalà1,estpre-
mier,puisquenon-divisibleparq1,q2,... ,qi−1,séquence quicontient touslesnombrespremiers
inférieursouégauxà⌊√m⌋.Danscesconditionsmestledernierfacteurdeladécomposition
den.
Question6.Écrireunenouvellefonctionfactoriser2(n)quiagitcommefactoriser,maisne
calculepasdetabledenombrespremiersetexploitelaseconderemarque ci-dessus.
II.Reconnaîtrelespuissances
Une écriture courantedeladécompositionenfacteurspremiersregroupelesfacteurségaux:
n=pα1
1pα2
2···pαk
k,p1<p2<···<pkpremiers,0<α1,0<α2, . . . , 0<αk
Lesαisontlesmultiplicitésden—enfaitlesmultiplicitésdesfacteurspremiersden.
Question7.ÉcrirelafonctioncalculerAlpha(n)(n≥2)quirangelesmultiplicitésdansun
tableauglobalalphaet renvoielenombred’entiersrangésdansalpha.
Onadmetquel’entiern(n≥2)s’écritcommelapuissance n=ab,sietseulementsibdivise
touteslesmutiplicitésden.
Question8.ÉcrirelafonctionestPuissance(n,b)(n≥2,b≥1)quirenvoie1si il existeun
entieratelquen=abet0sinon.
Question9.Ladécompositionenfacteurspremiersestuneopérationcoûteuse.Proposerune
techniquealternativepourdétectersiun entiernestun carréou pas.Aucun coden’estdemandé.
Téléchargé gratuitement sur www.Doc-Solus.fr .
X Informatique PSI 2009 — Énoncé 4/4
III.NombresdeCarmichael
Pardéfinition,un entiercestun nombredeCarmichael,sietseulementsi :
–L’entiercestimpairetn’estpaspremier.
–Ladécomposition decenfacteurspremiers s’écritc=p1p2...pkoùp1<p2<. . . <pd.
–Lenombrepi−1divisec−1pour touslesfacteurspremierspidec.
On notequel’onanécessairement2≤det3≤p1.
Question10.ÉcrirelafonctionestCarmichael(c)(c≥2)quirenvoie1sicestun nombre
deCarmichael, et0sinon.Onappliqueradirectementladéfinition desnombresdeCarmichael
donnée ci-dessus.
ÉnumérerlesnombresdeCarmichaelparlaméthode évidente est tropcoûteux.Ons’intéresse
d’abordàune classeparticulièredenombresdeCarmichael : ceuxdelaformec=p1p2p3,dits
d’ordre3.
Question11.ÉcrirelafonctioncalculerCarmichael3(n)(n≥2)quirangelesnombresde
Carmichaeld’ordre3inférieursouégauxàndansun tableauglobalcarmichael.Lafonction
calculerCarmichael3(n)renvoielenombred’entiersrangésdansletableau.On utiliseralaméthode
suivante:
–Calculerlesnombrespremiersentre3etn.
–Testerladernière condition deladéfinition desnombresdeCarmichaelpour tousles
produitspossiblesdetroisde cesnombres.
Pour trouver touslesnombresdeCarmichael inférieursàn, il existeunetechniquede criblage
assez efficace.Oncommence parsedonnerun tableau d’entierstden+1cases,desortequela
cased’indice ireprésentel’entieri.Initialement, lacased’indice icontienti.Puis. . .
–Pourchaquenombrepremierp,comprisentre3(inclus)et⌊√n⌋(exclu).
–Pourchaqueindice ivalide,delaformei=p2+k·p(p−1)(kentiernaturel).
–Posert[i]=t[i]/p.
Maintenant, lesindicesplusgrandsque2quidésignentune casedontle contenu vaut1sont
exactementlesnombresdeCarmichaelrecherchés.
Question12.ÉcrirelafonctioncalculerCarmichael(n)(n≥2)quirangelesnombresdeCarmi-
chael inférieursouégauxàndansletableauglobalcarmichael.LafonctioncalculerCarmichael(n)
renvoielenombred’entiersrangédansletableau.On utiliseralatechniquede criblagedécrite
ci-dessus.
∗ ∗
∗
Téléchargé gratuitement sur www.Doc-Solus.fr .
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!