Académique Documents
Professionnel Documents
Culture Documents
Serie Algo Important
Serie Algo Important
Classe:3ime SI
ChapitreVI
LesAlgorithmesArithmtiques
I.Introduction
Danscechapitre,onprsenteralesalgorithmesarithmtiqueslesplusconnus:calculsduPGCDe
duPPCM,recherchedesnombrespremiersetdcompositionenproduitsdesfacteurspremiers,la
conversiondunnombreenbase10verslebinaireetenhexadcimal.Alafin,ondvelopperale
problmequiconvertitunnombreenbaseb1ensonquivalentenbaseb2.
II.LecalculduPGCD
1.Dfinition
PGCD:PlusGrandCommunDiviseur
LePGCDdedeuxentiersmetnnotPGCD(m,n)estlegrandentierpermettantdedivisermetn.
2.Application
AnalyserpuisdduirelalgorithmedunefonctionquipermetdedterminerlePGCDdedeuxentiers
metnselonlesdeuxmthodes:diffrenceetEuclide.
Mthodedediffrence
a.Principe
Leprincipedecettemthodeest:
Chercherlediffrencededeuxvaleursetlarangerdanslavaleurlaplusgrandejusquobtenirla
mmevaleur.
Estcequelenombrederptitionsestconnu?
Aumoinsgalecombien?
b.Exemples
c.SpcificationdelafonctionPGCD_Diff
Rsultat=PGCD_diff
Traitement=
EncasdgalitlePGCD_Diff=m
TantqueM<>Nchercherlavaleurlaplusgrande
Cettevaleurreoitladiffrence
Paramtresdalafonction:m etn
MouradBahri&NaimaBayoudh&LeilaBenNjimaIkramNasrallah&MedAliFarhat
Page1
LesAlgorithmesArithmtiques
Classe:3ime SI
d.Algorithme
0) DbutfonctionPGCD_Diff(m,n:entier):entier
1) Tantquem<>nFaire
Sim>nAlorsm mn
Sinonnnm
Finsi
Fintantque
2) PGCD_Diffm
3) FinPGCD_Diff
MthodedEuclide
a.Principe
Leprincipedecettemthodeest:
Chercherlediffrencededeuxvaleursetlarangerdanslavaleurlaplusgrandejusquobtenirla
mmevaleur.
Estcequelenombrederptitionsestconnu?
Aumoinsgalecombien?
b.Exemples
c.SpcificationdelafonctionPGCD_Euc
Rsultat=PGCD_Euc
Traitement=
EncasdgalitlePGCD_Euc=m
Tantque(m<>n)et(n<>0)
mprendlavaleurdennprendlerestedeladivisiondemetn
Paramtresdalafonction:metn
d.Algorithme
0) DbutfonctionPGCD_Euc(m,n:entier):entier
1) Tantque(m<>n)et(n<>0)Faire
auxm m nnnmodaux
Fintantque
2) PGCD_Eucm
3) FinPGCD_Euc
MouradBahri&NaimaBayoudh&LeilaBenNjimaIkramNasrallah&MedAliFarhat
Page2
Classe:3ime SI
LesAlgorithmesArithmtiques
e.TDO
Objet
TypeNature Rle
aux
Entier
Variableauxiliaire
3.Exercice
EcrireunprogrammepascalquicalculelePGCDdetroisentiersstrictementpositifsa,betc.
N.B.PGCD(a,b,c)=PGCD(PGCD(a,b),c)
II.LecalculduPPCM
1.Dfinition
PPCM:PlusPetitCommunMultiple
LePPCMdedeuxentiersmetnnotPPCM(m,n)estlepluspetitentiermultiplelafoisdemetn.
2.Application
AnalyserpuisdduirelalgorithmedunefonctionquipermetdedterminerlePPCMdedeuxentiers
metn.
a.Principe
LeprincipederecherchedePPCMest:
Chercherleplusmultipledemquiestaussimultipleden
estcequelenombrederptitionsestconnuetaumoinsgalecombien?
b.Exemples
c.SpcificationdelafonctionPPCM
Rsultat=PPCM
Traitement=
Afindeminimiserlesitrationsilutiledechercherlemaximumdemetn
LePPCMcommence0,onrptelajoutdemauPPCMjusquavoirPPCMmultipleden(PPCM
modn=0)
Paramtresdalafonction:metn
MouradBahri&NaimaBayoudh&LeilaBenNjimaIkramNasrallah&MedAliFarhat
Page3
Classe:3ime SI
LesAlgorithmesArithmtiques
d.Algorithme
0) DbutfonctionPPCM(m,n:entier):entier
1) PPCM0
Rpter
PPCMPPCM+m
JusquPPCMmodn=0
2) FinPPCM3.Exercice
EcrireunprogrammepascalquicherchelePPCMdedeuxentiersmetnenutilisantlaformule
suivante:
PPCM(m,n)=m*nDIVPGCD(m,n)
III.Lesnombrespremiers
1.Dfinition
Unnombre>1estditpremiersilestdivisibleseulementpar1etparluimme.
2.Application
Analyserpuisdduirelalgorithmedunefonctionquipermetvrifiersiunentier>1estpremierou
non.
a.Principe
pourtestersiunnombre>1estpremier,ilsuffitde:
Chercherlenombredesesdiviseurs
Testersicenombre=2b.Exemples
n=10
lesdiviseursde10,autresque1et10,sontcomprisentre2et5(10div2):
utilisationdelabouclePour
nbcommence2
siontrouveundiviseurlenbaugmentede1
c.Algorithme
0) Dbutpremier(n:entier):boolen
1) nb2
Pouride2ndiv2faire
SinMODi=0Alorsnbnb+1
Finsi
Finpour
2) premierFaux
Sinb=2AlorspremierVrai
Finsi
3) Finpremier
d.TDO
Objet
TypeNature Rle
nb
Entier
Nombredediviseursden
Entier
Compteur
MouradBahri&NaimaBayoudh&LeilaBenNjimaIkramNasrallah&MedAliFarhat
Page4
LesAlgorithmesArithmtiques
Classe:3ime SI
3.Exercices
1)Ecrireunprogrammepascalquidterminesideuxentiersnonnulssontpremiersentreeuxen
suivantlapropritsuivante:deuxentiersnonnulssontpremiersentreeuxsietseulementsileurs
PGCD=1
2)Unnombreestditprimairesilestunnombrepremierousilunnombrequiaunseuldiviseur
premierautreque1.
Unnombreestditpremiersilestdivisiblepar1etparluimmeseulement.
SoitleproblmePrimairequilitunnombrestrictementpositifetvrifiesilestprimaire.
Pourvrifierquelenombreestprimaireilsuffitdevrifier:
Quilestpremier.
Ousilpossdeunseuldiviseurpremier.
NB:
Sixestnonpremieralorscherchertousdiviseursdex(autreque1etx)etlesmettredansun
tableauet
vrifiersiparmisesdiviseursexisteunseulnombrepremier.
Exemples:
TravailFaire
1) Dcomposerleproblmeenmodules
2) Analyserleproblmeprincipaletchacundesmodulesenvisags.
3) Endduirelesalgorithmesrelatifsauxmodulesetauprogrammeprincipal.
IV.Dcompositionenfacteurspremiers
1.Dfinition
Dcomposerunentierenfacteurspremiersconsistecrirecetentiersouslaformedunproduitde
cesdiviseurspremiers.
2.Application
Analyserpuisdduirelalgorithmequipermetdechercheretdafficherladcompositionenproduit
decesdiviseurspremiers.
MouradBahri&NaimaBayoudh&LeilaBenNjimaIkramNasrallah&MedAliFarhat
Page5
LesAlgorithmesArithmtiques
Classe:3ime SI
a.Principe
Pourchercherladcompositiondunentierenproduitdefacteurspremiersonpeutsuivrela
mthodesuivante:
tantquelenombreestdivisiblepar2,leremplacerparlequotient
refairelemmetravailavec3,4,.
jusquavoirlavaleur1
b.Exemples
c.Dcompositionmodulaire
d.Analysedelaprocdurefacteurs
Rsultat=untableauFquicontiendralesfacteursN:nombredesfacteurs
Traitement=
Rptersilenombrexestdivisibleparialorsonaugmentelenombredesfacteurs(n)etonmetlei
dansletableauFsinonisincrmenteJusqundevient=1.
Paramtresdelaprocdure
tableauF,n:nombredesfacteursquipassentparvariableLenombrexquonvaledcomposerne
facteurspremiers.
e.Algorithmedelaprocdurefacteurs
0) Dbutprocdurefacteurs(varF:tabvarn:entierx:entier)
1) n0,i2
Rpter
sinmodi=0alorsxxdivinn+1F[n]i
sinonii+1
Finsi
Jusqun=1
2) Finfacteurs
MouradBahri&NaimaBayoudh&LeilaBenNjimaIkramNasrallah&MedAliFarhat
Page6
LesAlgorithmesArithmtiques
Classe:3ime SI
f.TDO
Objet
TypeNature Rle
entier
Compteur
3.Exercice
UnnombreestditrigolosoudeSMITHsilestunnombredontlasommedeschiffresestgalela
sommedetousleschiffresdesesfacteurspremiers
Exemples
4=2x2=>Sommechiffres=4
22=2x11=>Sommechiffres=4
27=3x3x3=>Sommechiffres=9
SoitleproblmeSMITHquilitunnombreNstrictementpositifetaffichesilestunnombredeSMITH
ounon.
1) DcomposerleproblmeSMITHentroismodulesaumoins.
2) Analyserleproblmeprincipaletsesmodulesetendduirelesalgorithmescorresponds
VI.Laconversionentrebasesdenumration
1.Dfinition
Convertirunentierpositifndansunebaseb(b>=2)consistechercherlareprsentationdendans
labaseb.
Cettereprsentationscritsouslaforme:
N=anbn +an1bn1 +an2bn2 +...+a1b1 +a0b0.
O0<=ak <=b1
2.Application1
Analyserpuisdduirelalgorithmequipermetdeconvertirunnombreenbase10enbinaire.
a.Principe
pourconvertirunnombreenbase10verslabase2consistefaire
desdivisionssuccessivespar2enremplaantchaquefoisledividendeparlequotient
prendrelesrestesenordreinverse.
b.exemple
convertir13enbase10enbinaire
MouradBahri&NaimaBayoudh&LeilaBenNjimaIkramNasrallah&MedAliFarhat
Page7
Classe:3ime SI
LesAlgorithmesArithmtiques
3.Dcompositionmodulaire
d.AnalysedelaprocdureRestes
Rsultat=untableauRquicontiendralesrestesdesdivisionsn:tailledutableauR
Traitement=
RpterchercherlerestedeladivisiondeXpar2,mettrelerestedansletableauRJusqun
devient=0.
Paramtresdelaprocdure
tableauR,n:tailledutableauquipassentparvariable
Lenombrexquonvaleconvertirenbase2.
e.Algorithmedelaprocdurerestes
0) Dbutprocdurerestes(varR:tabvarn:entierx:entier)
1) n0
Rpter
nn+1
R[n]xMod2
nndiv2
Jusqun=0
2) Finrestes
3.application2
Analyserpuisdduirelalgorithmequipermetdeconvertirunnombreenbase10enhexadcimal.
a.Principe
pourconvertirunnombreenbase10verslabase16consistefaire
desdivisionssuccessivespar16enremplaantchaquefoisledividendeparlequotient
prendrelesrestesenordreinversetoutencodantlesrestescomprisentre10et15selonla
maniresuivante:
Reste
10 11 12 13 14 15
Codeenbase
16
MouradBahri&NaimaBayoudh&LeilaBenNjimaIkramNasrallah&MedAliFarhat
Page8
LesAlgorithmesArithmtiques
Classe:3ime SI
b.exemple
Convertir152enbase10verslhexadcimal
c.Dcompositionmodulaire
d.AnalysedelaprocdureRestes
Rsultat=untableauRquicontiendralesrestesdesdivisionsN:tailledutableauR
Traitement=
RpterchercherlerestedeladivisiondeXpar16,mettrelerestedansletableauRJusqun
devient=0.
Paramtresdelaprocdure
tableauR,n:tailledutableauquipassentparvariable
Lenombrexquonvaleconvertirenbase16.
e.Algorithmedelaprocdurerestes
0) Dbutprocdurerestes(varR:tabvarn:entierx:entier)
1) n0
Rpter
nn+1
R[n]xMod16
nndiv16
Jusqun=0
2) Finrestes
f.Analysedelaprocdureafficher
Rsultat=afficherleslmentsdetableauRdetaillen
Traitement=afficherleslmentsdetableauRdetaillen:utiliserbouclepour..faire
pourchaquelmentdeR,vrifiersilestdans[0,9]alorslaffichersinonaffichelalettre
correspondante.
Lecodede10enbase16estA
Ord(A)=65
Onaffichelecaractredontlecode=65+1010A
Onaffichelecaractredontlecode=65+1110B
MouradBahri&NaimaBayoudh&LeilaBenNjimaIkramNasrallah&MedAliFarhat
Page9
Classe:3ime SI
LesAlgorithmesArithmtiques
Paramtresdecetteprocdure
tableauR,n:tailledutableauquipassentparvaleur
e.Algorithmedelaprocdurerestes
0) Dbutprocdurerestes(R:tabn:entier)
1) Pouriden1Faire
SiR[i]dans[1..9]AlorsEcrire(R[i])
SinonEcrire(chr(ord(A)+R[i]10)
Finsi
2) Finafficher
4.Exercice
Nousproposonsdeconvertirunnombrebinaireenoctal(base8)ensuivantlamthodesuivante:
Extraireunepartiede3bits.
Convertircettepartieenoctalenutilisantlespuissancesde2.
Rptercesdeuxoprationspourtouteslespartiesdunombrebinaire.
Laconcatnationdesdfrentsrsultatsdonnelersultatenoctal.
Onajoutesincessairedes"0"gauchedunombrebinairedefaonobtenirunelongueur
multiplede3.
Exemples:
Soitconvertirlenombre1101
Onsuitlamthodesuivante:
Lalongueurdenombrenestpasmultiplede3:
Ajouterdes0"gauchedecenombredefaonobtenirunelongueurmultiplede3:
Lenombredevient001101
0
0
2
1
1
0
2
1
0
Lenombreoctalest15
VII.Problme
1.Enonc
crire un programme qui ralise la conversion dun nombre crit en base b1 en son quivalent en
baseb2.avecb1etb2sontdeuxentierssuprieurs1.
2.Exemple
Convertir(15)8 (.)2
(15)8()10 (15)8=1*81+5*80=(13)10
(13)10=(1101)2
MouradBahri&NaimaBayoudh&LeilaBenNjimaIkramNasrallah&MedAliFarhat
Page10
Classe:3ime SI
LesAlgorithmesArithmtiques
3.Solution
Principe
1.VrifierquelenombreNestunnombre"valide"danssabase(b1):
VrifiersichaquechiffredeNest"acceptable"pourcettebase.
2.Sib1=10alorsLatransformationennouvellebase(b2)seferapardesdivisionssuccessivespar
b2.
3.Sib2=10Alorslatransformationenbase10sefaitparmultiplicationssuccessives.
4.Sinon:RamenerNdanslabase10.
Transformerlersultatdansb2
Mthode1
Dcompositionmodulaire
AlgorithmeduPP
0)Dbutconversion
1)Rpter
Proc Saisie_base(b1)
ProcSaisie_base(b2)
Jusqu(b1b2)
2)ProcSaisie_Nombre(N,b1)
3)Ecrire(N,"dans",b1,"=",FNCalcul(N,b1,b2),"dans",b2)
4)Finconversion
AlgorithmedelaProcedureSaisie_base
0)Procduresaisie_base(varb:entier)
1)Rpter
Ecrire("introduireunebaseentre2et16"),Lire(b)
Jusqu (b>1)
2)FinSaisie_base
MouradBahri&NaimaBayoudh&LeilaBenNjimaIkramNasrallah&MedAliFarhat
Page11
Classe:3ime SI
LesAlgorithmesArithmtiques
AlgorithmedelaProcdureSaisie_nombre
0)ProcdureSaisie_nombre(varN:Chaneb1:entier)
1)Rpter
crire("introduireunnombredansbase",b1),Lire(N)
Test vrai
Pouride1long(N)faire
Si b1 10alorsconvch(b11,ch)cch[1]
SiNON(N[i]dans["0"..c])alorsTestfaux
Finsi
Sinoncchr(b1+54)
SiNON(N[i]dans["0".."9",'"A"..c])alorsTest faux
Finsi
FinPour
Jusqu (test)et(N"")
2)FinSaisie_nombre
AlgorithmedelafonctionCalcul
0)FonctionCalcul(N:chaneb1,b2:entier):chane
1)Si(b1=10)alorsCalculFNconv_10_b(N,b2)
Sinon
Sib2=10alors CalculFNconv_b_10(N,b1)
Sinon CalculFNconv_10_b(FNconv_b_10(N,b1),b2)
Finsi
2)FinCalcul
Algorithmedelafonctionconv_b_10
0)FonctionConv_b_10(N:chaneb1:entier) :chane
1)Nr0
Pour i de1 long(N) faire
SiN[i]dans["0".."9"]Alors Valeur(N[i],x,e)
Sinon xord(N[i])55
Finsi
NrNr+x*FNpuissance(b1,long(N)i)
Finpour
2)Convch(Nr,ch)
3)Conv_b_10ch
4)FinConv_b_10
MouradBahri&NaimaBayoudh&LeilaBenNjimaIkramNasrallah&MedAliFarhat
Page12
Classe:3ime SI
LesAlgorithmesArithmtiques
Algorithmedelafonctionconv_10_b
0)FonctionConv_10_b(N:chaneb2:entier):chane
1)Valeur(N,Nd,e)
2) Ch""
Rpter
RNdmod b2
SiRdans[0..9] AlorsConvch(R,Ch1)
Ch Ch1+Ch
Sinon Ch Chr(55+R)+Ch
FinSi
Nd Nddivb2
Jusqu (Nd=0)
3)Conv_10_bch
4)FinConv_10_b
AlgorithmedelaFonctionPuissance
0)FonctionPuissance(b,k:entier):entierlong
1)P1
Pour j de 1 K faire
PP*b
Finpour
2)PuissanceP
3)Finpuissance
Mthode2
Dcompositionmodulaire
{ProgrammePrincipal}
0)Dbutconversion
1)Ch"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
2) rpter
lire(N)
lire(b1)
jusquVerifie(N,b1)
3)Lire(b2)
MouradBahri&NaimaBayoudh&LeilaBenNjimaIkramNasrallah&MedAliFarhat
Page13
LesAlgorithmesArithmtiques
Classe:3ime SI
4)Ecrire(N,"enbase",b1,"=",Base(Base10(N,b1),b2),"enbase",b2)
5)Finconversion
AlgorithmedelaFonctionVerifie
{Ch"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"}
0)FonctionVerifie(N:chane,b1:entier):boolen
1)testvrai
Pouride1long(N)faire
SiPos(N[i],Ch)>b1Alorstestfaux
Finsi
Finpour
2)Verifietest
3)Finverifie
{Transformelenombreenbase10}
0)FonctionBase10(N:chaine,b1:entier):entier
1)b100
Pouride1long(N)faire
b10b10*b1+Pos(N[i],Ch)1
Finpour
2)base10b103)Finbase10
{Transformelenombredebase10enBase:b2}
0)Fonctionbase(N:entier,b2:entier):chane
1)b""
Tantque (N<>0)faire
iNmodb2
bch[i+1]+b
NNdivb2
fintantque
2)baseb
3)finbase
MouradBahri&NaimaBayoudh&LeilaBenNjimaIkramNasrallah&MedAliFarhat
Page14