Vous êtes sur la page 1sur 9

Chap 5 : Les algorithmes Arithmtiques

Classe : 4

me

SI

LES ALGORITHMES ARITHMETIQUES


I- Introduction
Dans ce chapitre nous allons tudier quelques algorithmes relatifs larithmtique qui est une branche des mathmatiques qui tudie les relations entre les nombres. Cest aussi ltude des nombres et des oprations entre eux.

II- Calcul du PGCD (Solution rcursive) :


1. Activit 1: Proposer une analyse, puis dduisez lalgorithme dune fonction permettant de calculer le PGCD (Le Plus Grand Commun Diviseur) de deux entiers positifs non nuls a et b, en utilisant la mthode des diffrences. 2. Mthode 1 n>m n<m n=m n=nm m=mn PGCD = m (ou n) m = m n M = 35 ; n = 20 M N Exemple 2 : 35 20 PGCD = 5 PGCD(8,8) = 8 15 20 15 5 10 5 5 5

Exemple 1 :

M=8;n=8

a. Solution itrative
Analyse de la fonction PGCD : Rsultat = PGCD Algorithme de la fonction PGCD : 0- Dbut fonction PGCD (a, b : entier) : entier

Traitement : PGCD a 1- Tant que a b Faire Tant que a b Faire Si a > b alors a a b Si a > b alors a a b Sinon b b - a Sinon b b - a Fin Si Fin Tant que la plus grande valeur sera remplace par la diffrence jusqu a=b 2- PGCD a 3- Fin PGCD

Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim

page-1/9-

Chap 5 : Les algorithmes Arithmtiques

Classe : 4

me

SI

b. Solution rcursive
Algorithme Rcursif de la fonction PGCD : 0- Dbut fonction PGCD (a, b : entier) : entier 1- Si a = b alors PGCD a Sinon Si a > b Alors PGCD FN PGCD (a-b, b) Sinon PGCD FN PGCD (a, b-a) Fin Si Fin Si 2- Fin PGCD

3. Mthode 2 PGCD (m, n) = PGCD (n, m mod n) jusqu n =0 do PGCD = m Exemple 1: M = 35 ; n = 20 Exemple 2 : M=8;n=8 PGCD (8, 8) = PGCD (8, 0) = 8

PGCD (35, 20) = PGCD (20, 15) = PGCD (15, 5) = PGCD (5, 0) = 5

a. Solution itrative :
0. Dbut fonction Calcul_PGCD (m, n: entier) : entier 1. Rpter R M mod N M N N R Jusqu (N = 0) 2. Calcul_PGCD M 3. Fin Calcul_PGCD

b. Solution rcursive
function pgcd(m, n: integer): Integer; begin if (n=0) then pgcd := m else pgcd := pgcd (n, m mod n) ; end;

Image2 1. Prsentation Arrangement de P lments parmi N : Cest le nombre de permutations ordonnes possibles de P lments parmi N. Exemple avec {a, b, c} : A(2,3) = 6 {a, b}, {b, a}, {a, c}, {c, a}, {b, c}, {c, b}

Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim

page-2/9-

Chap 5 : Les algorithmes Arithmtiques

Classe : 4

me

SI

Combinaison de P lments parmi N : Cest le nombre de permutations sans ordre possibles de P lments parmi N. Exemple avec {a, b, c} : C(2,3) = 3 {a, b}, {a, c}, {b, c} 2. Calcul de larrangement Un arrangement de P lments dun ensemble E N lments est un p-uplet dlments distincts de E. Le nombre darrangements de P lments de lensemble E est reprsent par la notation suivante : Image1 N et P sont des entiers qui vrifient la condition suivante : 1 P N Activit : Proposez une analyse, puis dduisez les algorithmes correspondants au problme permettant de chercher puis dafficher larrangement de deux entiers donns N et P, avec (1 P N).

Analyse du PP Rsultat = Ecrire (" A ( ", n, ",", p, ")=", FN Arrange (n, p)) Traitement : La fonction arrange permet de rechercher larrangement. La saisie de n et p sera la tache de la procdure saisie. Analyse de la fonction Arrange: Rsultat =Arrange

Algorithme du PP 0123Dbut arrangement Proc saisie (n, p) Ecrire (" A ( ", n,",", p,")=", FN Arrange (n, p)); Fin Arrangement

Algorithme de la fonction Arrange : 0- Dbut fonction arrange (n, p : entier) : entier 1- a 1 Pour I de n (n-p+1) (pas = -1) faire a a*i Fin Pour 2- Arrange a

Traitement : Arrange a 3- Fin arrange [a 1] Pour i de n (n-p+1) (pas = -1) faire aa*i Fin pour

Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim

page-3/9-

Chap 5 : Les algorithmes Arithmtiques

Classe : 4

me

SI

3. Calcul de la combinaison Une combinaison de P lments dun ensemble E de N lments est une partie de E forme par P lments. Le nombre de combinaison de P lments de lensemble E est reprsent par la notation suivante : image3 N et P sont des entiers qui vrifient la condition suivante : 0 P N Activit : Proposez une analyse, puis dduisez les algorithmes correspondants au problme permettant de chercher puis dafficher la combinaison de deux entiers donns n et p, avec (0 P N). Solution Itrative Analyse du PP Rsultat = Ecrire (" C ( ", n,",", p,")=", FN Comb (n, p)) Traitement : La fonction Comb permet de rechercher la combinaison de n et p. La saisie de n et p sera la tache de la procdure saisie. Analyse de la fonction Comb: Rsultat = Comb Traitement : Comb FN Fact(n) / (FN Fact(p) * FN Fact(n-p)) Algorithme du PP 0123Dbut Combinaison Proc saisie (n, p) Ecrire (" C ( ", n,",", p,")=", FN Comb (n, p)); Fin Combinaison

Algorithme de la fonction Comb : 0- Dbut fonction Comb (n, p : entier) : rel 1- Comb FN Fact(n) / (FN Fact(p) * FN Fact(n-p)) 2- Fin Comb

Solution Rcursive Daprs vos connaissances en Mathmatiques, vous pouvez dgager la relation suivante : Image4 Analyse de la fonction Comb: Algorithme de la fonction Comb :

Rsultat = Comb 0- Dbut fonction Comb (n, p : entier) : rel Traitement : 1- Si (p=0) ou (p = n) alors Comb 1 Si (p=0) ou (p = n) alors Comb 1 Sinon Sinon Comb Fn Comb (n-1, p) + Fn Comb (n-1, p) Comb Fn Comb (n-1, p) + Fn Comb (n-1, p) Finsi 2- Fin Comb

Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim

page-4/9-

Chap 5 : Les algorithmes Arithmtiques

Classe : 4

me

SI

IV- Quelques rgles de divisibilit :


1. Dfinition: Un entier n est divisible par un entier m, si le reste de la division euclidienne de n par m est nul. Une rgle de divisibilit est une squence doprations simples qui permet de reconnatre rapidement si un entier est divisible par un autre sans quil soit ncessaire deffectuer des divisions. Ces rgles sont gnralement appliques des grands nombres. 2. Divisibilit par 3 : Rgle : Un entier est divisible par 3 si la somme des chiffres qui le composent est divisible par 3. Activit : Ecrire une analyse modulaire permettant de vrifier si un entier n est divisible par 3 et dduire les algorithmes correspondants. Analyse du PP Rsultat = Ecrire (n, FN Div_3(n)) Traitement : La fonction Div_3 permet de savoir si un entier n est divisible par 3. La saisie de n sera faite dans le PP. Analyse de la fonction Div_3: Rsultat = Div_3 Traitement : Parcourir la chane qui contient le nombre n et rechercher la somme des chiffres qui le compose puis tester si cette somme est divisible par 3 Algorithme du PP 0. Dbut Divisibilite_3 1. Ecrire ("Entrer n :") Lire (n) 2. Ecrire ("L'entier ",n,Div_3(n)) 3. Fin Divisibilite_3 Algorithme de la fonction Div_3 : 0. Dbut fonction Div_3 (n : entier) : Chaine 1. Convch (n, ch); 2. Rpter S0 Pour i de 1 long (ch) faire Valeur (ch[i], nb, e) S S + nb Fin pour Convch(s, ch) Jusqu long (ch)=1 Si S dans [3, 6, 9] Alors div_3 " est divisible par 3" Sinon div_3 " nest pas divisible par 3" Fin si 3- Fin Div_3

3. Divisibilit par 4 : Un entier est divisible par 4 si le nombre compos des deux derniers chiffres est divisible par 4. Exemple : 5243 nest pas divisible par 4 car 43 nest pas divisible par 4 7224 est divisible par 4 car 24 est divisible par 4.

Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim

page-5/9-

Chap 5 : Les algorithmes Arithmtiques

Classe : 4

me

SI

Activit : Ecrire une analyse modulaire permettant de vrifier si un entier n est divisible par 4 en utilisant la rgle de divisibilit prcdente et dduire les algorithmes correspondants. Analyse du PP Rsultat = Ecrire (n, FN Div_4(n)) Algorithme du PP

0. Dbut Divpar4 1. Ecrire ("Entrer n :") Traitement : Lire (n) 2. Ecrire ("L'entier ", n, Div_4(n)) La fonction Div_4 permet de dterminer 3. Fin Divpar4 si un entier n est divisible par 4. La saisie de n sera faite dans le PP. Algorithme de la fonction Div_4 : Analyse de la fonction Div_4: Rsultat = Div_4 Traitement : Si d mod 4 = 0 Alors div_4"est divisible par 4" Sinon div_4" n'est pas divisible par 4" Fin si Valeur (ch1, d, er) ch1 sous chaine (ch, long (ch)-1,2) Convch(n,ch); 0. 1. 2. 3. 4. Dbut fonction Div_4 (n : entier) : Chaine Convch(n,ch); ch1 sous chaine (ch, long (ch)-1,2) Valeur (ch1, d, er) Si d mod 4 = 0 Alors div_4"est divisible par 4" Sinon div_4" n'est pas divisible par 4" Fin si 5. Fin Div_4

4. Divisibilit par 5: Un entier est divisible par 5 si son chiffre des units est gal 0 ou 5. Exemple : 5243 nest pas divisible par 5 car 3 {0,5} 72240 est divisible par 5 car 0 {0,5} Activit : Ecrire une analyse modulaire permettant de vrifier si un entier n est divisible par 5 en utilisant la rgle de divisibilit prcdente et dduire les algorithmes. 0. 1. 2. 3. 4. 5. Algorithme de la fonction Div_5 Dbut Fonction div_5 (n : entier) : chane Convch(n,ch) ch1 "'' Ch1 sous chaine (ch,long(ch),1) Valeur (ch1, u, er) Si u dans [0,5] Alors div_5 " est divisible par 5" Sinon div_5" n'est pas divisible par 5" Fin si Fin Div_5

6.

Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim

page-6/9-

Chap 5 : Les algorithmes Arithmtiques

Classe : 4

me

SI

5. Autre rgles de divisibilit : Un entier est divisible par 2 si son chiffre des units est divisible par 2. Un entier est divisible par 9 si la somme de ses chiffres est divisible par 9. Un entier est divisible par 10 si son chiffre des units est gal 0. Un entier est divisible par 25 si le nombre compos des deux derniers chiffres est divisible par 25.

V- Conversion entre bases de numration :


1. Dfinition: Un systme de numration est une mthode de comptage fond sur une base de numration qui est un entier suprieur ou gal deux. Soit N une base de numration, le systme sera dot de N chiffres allant de [0 N-1]. 2. Exemples de bases de Numration: Base 2 : Alphabet de la base 2 : {0,1} Base 8 : Alphabet de la base 2 : {0, 1, 3, 4, 5, 6, 7} Base 10 : Alphabet de la base 2 : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} Base 16 : Alphabet de la base 2 : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} 3. Conversion dun nombre dcimal en base b: Activit : Ecrire une analyse modulaire puis les algorithmes permettant de convertir un nombre dcimal en binaire Image 5 Solution avec Tableau Algorithme de la Procdure conv_10_2 0. Procedure Conv_10_2 (N :entier ; var T :tab ; var i : entier ) 1. i 0 Rpter Inc(i) T[i] N mod 2 N N div 2 Jusqu (N = 0) 2. Fin Conv_10_2 Solution avec Chaine Algorithme de la fonction conv_10_2 0. Fonction Conv_10_2 (N : entier) : entier 1. Ch "" Rpter R Nd mod 2 Convch ( R, Ch1) Ch Ch1 + Ch Nd Nd div 2 Jusqu (Nd = 0) 2. valeur (ch, n, er) 3. Conv_10_2 n 4. Fin Conv_10_2

4. Conversion dun nombre Hexadcimal en Binaire : Activit Ecrire une analyse modulaire puis les algorithmes permettant de convertir un nombre hexadcimal en binaire. Image6
Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim page-7/9-

Chap 5 : Les algorithmes Arithmtiques

Classe : 4

me

SI

Solution Algorithmique Algorithme PP 0. 1. 2. 3. Dbut Hexa_Binaire Proc Saisie (ch) Ecrire ("(", ch,") 16= (", binaire (ch),") 2") Fin Algorithme de la fonction Binaire 0. Fonction Binaire (Ch: chaine):chaine 1. chb "" Pour I de 1 long (ch) Faire Chbchb+Bin_chiffre (ch[i]) Fin Pour 2. Tant que chb [1] =" 0" Faire Efface (chb, 1,1) Fin Tantque 3. Binaire chb en 4. Fin Binaire Algorithme Binaire Chiffre 0. fonction bin_chiffre(c:caractre):chaine 1. Si c dans ["0".."9"] Alors valeur (ch, n, er) Sinon N ord(c)-55 Finsi 2. ch "0000", i 4 repeter R n mod 2 Convch(R,ch1) ch[i] ch1[1] N N div 2 I i-1 Jusqu n=0 3. bin_chiffre ch 4. Fin bin_chiffre

Algorithme de saisie

0. Procdure saisie (var ch: chaine) 1. Repeter Ecrire ("Donner un nombre Hexadcimal: ") Lire (ch) I 1, b Vrai Repeter Si ch[i] dans ["0".."9","A".."F"] Alors II+1 Sinon B faux Finsi Jusqu (b=Faux) ou (i>long (ch)) Jusqu b; 2. Fin saisie

5. Conversion dun nombre octal en dcimal: Activit Ecrire une analyse modulaire puis les algorithmes permettant de convertir un nombre de la base 8 en base 10.

Image7

Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim

page-8/9-

Chap 5 : Les algorithmes Arithmtiques

Classe : 4

me

SI

Solution Algorithmique Algorithme PP 0. 1. 2. 3. Dbut Octal_Decimal Proc Saisie(N) Ecrire ("(", N,") 8= (", Fn Decimal(N),")10") Fin Octal_Decimal. Algorithme de la procedure saisie 0. fonction Dcimal (N:entier long):entier long 1. Convch(N,ch) 2. s0 Pour I de 1 long (ch) Faire valeur (ch[i],NB,er) S S+Nb*puissance(long(ch)-i) Fin Pour 3. Decimal S 4. Fin Decimal Algorithme de la procedure saisie 0. fonction puissance (x:entier): entier long 1. p 1 pour i de 1 x Faire p p*8 Fin Pour 2. puissance p 3. Fin puissance

Algorithme de la procedure saisie 0. Procdure saisie (var N:entier long) 1. Rpter Ecrire ("Donner un nombre en binaire: ") Lire(N) Convch(N, ch) I 1 , b Vrai Rpter Si ch[i] dans ["0".."7"] Alors II+1 Sinon B faux Fin si Jusqu (b=Faux) ou (i>long (ch)) Jusqu b 2. Fin saisie

6. Conversion dun nombre Binaire en Octal : Activit Ecrire une analyse modulaire puis les algorithmes permettant de convertir un nombre de la base 2 en base 8. Image8 Solution Algorithmique Algorithme PP 0. Debut Octal_decimal 1. Proc Saisie (ch) 2. Ecrire ("(", ch, ") 2= (", Octal (ch), ") 8") 3. Fin Octal_decimal Algorithme fonction Octal 0. fonction Octal (ch: chane):entier long 1. Tant que long (ch) mod 3 <> 0 Faire ch "0"+ch Fin Tantque 2. ch2 ''; l long (ch) 3. repeter Algorithme Procedure saisie ch1 sous-chaine(ch,l-2,3) 0. Procedure saisie(var ch : chaine) s0 1. Rpter Pour I de 1 to long(ch1) faire Ecrire ("Donner un nombre en binaire: ") Valeur (ch1[i],NB,er) Lire (ch) S S+Nb*puissance(long(ch1)-i) 2. I1 btrue Fin Pour Repeter Convch(S, ch1) Si ch[i] dans ["0","1"] Alors i i+1 ch2 ch1+ch2 Sinon bfaux ll-3 Jusqu (non(b)) ou (i>long (ch)) Jusqu (l = 0) Jusqu b 4. valeur (ch2, S, er) 3. Fin saisie 5. Octal S 6. Fin Octal

Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim

page-9/9-

Vous aimerez peut-être aussi