Vous êtes sur la page 1sur 14

LesAlgorithmesArithmtiques

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 +0*2 +1*2 =1

0
2

1
0

1*2 +0*2 +1*2 =5

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

Vous aimerez peut-être aussi