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

X Informatique PSI 2009 — Énoncé 1/4
ÉCOLEPOLYTECHNIQUE
CONCOURSDADMISSION2009 FILIÈRESPSIetPT
ÉPREUVEDINFORMATIQUE
(Durée :2heures)
Lutilisation descalculatricesnestpasautorisée pourcette épreuve.
Lelangagedeprogrammationchoisiparle candidatdoitêtrespécié 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 a0etb>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 sutdevérierque
mod(a,b)vaut0.
I.Nombrespremiers
Onrappellequun entiersupérieurouégalà2estpremiersietseulementsi il nestdivisibleque
par1etparlui-même.
Question1.ÉcrirelafonctionestPremier(n)quiprend un entiern(n2)enargument,et
quirenvoie1sinestpremieret0sinon.Onappliqueradirectementladénition desnombres
premiersdonnée ci-dessus.
Onveutmaintenantcalculer touslesnombrespremiersinférieursàun entierdonnén.Onva
proderselontroisméthodesdiérentes.
Téléchargé gratuitement sur www.Doc-Solus.fr .
X Informatique PSI 2009 — Énoncé 2/4
Question2.ÉcrirelafonctionpetitsPremiers(n)quiprend enargumentun entiern2,
etqui :
1.Range(dansl’ordre croissant) lesnombrespremiersinférieursouégauxàndansun tableau
global(ou prédéclaré)premier,quel’onsupposera assez grand.
2.Renvoielenombredentiersrangésdanspremier.
Parexemplepourn=17,votrefonction devrarenvoyer7et remplirledébutdepremierainsi :
2 3 5 7 11 13 17 ···
LafonctionpetitsPremiersseralaplus simplepossible,destechniquesplusecaces sontl’objet
desdeux questions suivantes.
Ilestassez faciledevoirque,pour testersiun entierimpairm(3m)estpremier, il sutde
vérierquemnestdivisibleparaucun nombrepremiercomprisentre3etm.
Question3.ÉcrireunenouvellefonctionpetitsPremiers2(n),quiagitcommepetitsPremiers(n)
maisestplusecace.Cettenouvellefonctionappliqueralaremarque ci-dessus, lesnombres
premiersentre3etmétantlusdansletableaupremierencoursderemplissage.
AuIIIesiècleavantJesus-Christ,Ératosthène,mathématicien,astronome etphilosopheinvente
uneméthode ecace 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(n1)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)napasété eectuée,
cestni. Sinon,recommenceren2.
Lescasesnon-rayéesreprésententmaintenantlesnombrespremiers.Àtitredexemple,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)
XX X X X (i=5)
Lesnombrespremierstrouvés sontdonc2,3,5,7,11.
Question4.ÉcrirelafonctionpetitsPremiers3(n),quiagitcommepetitsPremiers(n)maisutilise
le cribledÉratosthène.Onsattachera à respecterl’espritde cettetechnique,eten particulierà
évitermultiplications,divisionset racinescarrées,dicilesàeectuerpourlesmathématiciens
grecs.
Onrappellequetoutentiern(n2)peutsécriredemanièreunique commeleproduit
n=p1p2···pk,oùp1p2... pksontdesnombrespremiers.Onappelle cette écri-
tureladécompositionenfacteurspremiersden.Cettedénitionsuggè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(n2),etqui
range(dansl’ordre croissantausenslarge)lesfacteurspremiersdendansun tableauglobal
facteur,supposéassez grand.Lafonctionfactoriserrenvoielenombredentiersrangésdansfacteur.
Parexemplepourn=90,votrefonction devrarenvoyer4et remplirledébutdefacteurainsi :
2 3 3 5 ···
Ilnestpastrop diciledevoirque,dansl’algorithmedessaidesdivisions,on peut remplacerla
suitedesnombrespremiersparunesuiteplus simpleàcalculer,du momentque celle-cicommence
par2,soitcroissante,etcontiennelesnombrespremiersparexemple,q1=2,qj+1=2j+1
(j1).Eneet,un invariantdel’algorithme estque,àl’étape2,mnestdivisibleparaucun des
entiersq1,... ,qi1,etdoncparaucun nombrepremierstrictementinférieuràqi.Parconséquent,
siqidivisem(étape3),alorsqiestpremier.
Parailleurs,on peutlimiterlatailledesfacteursessayés.Lasuitedesqieststrictementcroissante,
tandisquemdécroit.Onniradoncparavoirq2
i>m.Dèslors,m,s’il nestpaségalà1,estpre-
mier,puisquenon-divisibleparq1,q2,... ,qi1,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ésdenenfaitlesmultiplicitésdesfacteurspremiersden.
Question7.ÉcrirelafonctioncalculerAlpha(n)(n2)quirangelesmultiplicitésdansun
tableauglobalalphaet renvoielenombredentiersrangésdansalpha.
Onadmetquel’entiern(n2)sécritcommelapuissance n=ab,sietseulementsibdivise
touteslesmutiplicitésden.
Question8.ÉcrirelafonctionestPuissance(n,b)(n2,b1)quirenvoie1si il existeun
entieratelquen=abet0sinon.
Question9.Ladécompositionenfacteurspremiersestuneopérationcoûteuse.Proposerune
techniquealternativepourdétectersiun entiernestun carréou pas.Aucun codenestdemandé.
Téléchargé gratuitement sur www.Doc-Solus.fr .
X Informatique PSI 2009 — Énoncé 4/4
III.NombresdeCarmichael
Pardénition,un entiercestun nombredeCarmichael,sietseulementsi :
Lentiercestimpairetnestpaspremier.
Ladécomposition decenfacteurspremiers sécritc=p1p2...pkoùp1<p2<. . . <pd.
Lenombrepi1divisec1pour touslesfacteurspremierspidec.
On notequel’onanécessairement2det3p1.
Question10.ÉcrirelafonctionestCarmichael(c)(c2)quirenvoie1sicestun nombre
deCarmichael, et0sinon.Onappliqueradirectementladénition desnombresdeCarmichael
donnée ci-dessus.
ÉnumérerlesnombresdeCarmichaelparlaméthode évidente est tropcoûteux.Ons’intéresse
dabordàune classeparticulièredenombresdeCarmichael : ceuxdelaformec=p1p2p3,dits
dordre3.
Question11.ÉcrirelafonctioncalculerCarmichael3(n)(n2)quirangelesnombresde
Carmichaeldordre3inférieursouégauxàndansun tableauglobalcarmichael.Lafonction
calculerCarmichael3(n)renvoielenombredentiersrangésdansletableau.On utiliseralaméthode
suivante:
Calculerlesnombrespremiersentre3etn.
Testerladernière condition deladénition desnombresdeCarmichaelpour tousles
produitspossiblesdetroisde cesnombres.
Pour trouver touslesnombresdeCarmichael inférieursàn, il existeunetechniquede criblage
assez ecace.Oncommence parsedonnerun tableau dentierstden+1cases,desortequela
cased’indice ireprésentel’entieri.Initialement, lacased’indice icontienti.Puis. . .
Pourchaquenombrepremierp,comprisentre3(inclus)etn(exclu).
Pourchaqueindice ivalide,delaformei=p2+k·p(p1)(kentiernaturel).
Posert[i]=t[i]/p.
Maintenant, lesindicesplusgrandsque2quidésignentune casedontle contenu vaut1sont
exactementlesnombresdeCarmichaelrecherchés.
Question12.ÉcrirelafonctioncalculerCarmichael(n)(n2)quirangelesnombresdeCarmi-
chael inférieursouégauxàndansletableauglobalcarmichael.LafonctioncalculerCarmichael(n)
renvoielenombredentiersrangé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 linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !