Telechargé par chaima khalsi

les algorithmes d'arithmetiques

publicité
Chap 5 : Les algorithmes Arithmétiques
Classe : 4
ème
SI
LES ALGORITHMES ARITHMETIQUES
I- Introduction
Dans ce chapitre nous allons étudier quelques algorithmes relatifs à l’arithmétique qui est une
branche des mathématiques qui étudie les relations entre les nombres. C’est aussi l’étude des
nombres et des opérations entre eux.
II- Calcul du PGCD (Solution récursive) :
1. Activité 1:
Proposer une analyse, puis déduisez l’algorithme d’une fonction permettant de calculer le PGCD
(Le Plus Grand Commun Diviseur) de deux entiers positifs non nuls a et b, en utilisant la méthode
des différences.
2. Méthode 1



n>m 
n<m 
n=m 
n=n–m
m=m–n
PGCD = m (ou n) m = m – n
Exemple 1 :
M = 35 ; n = 20

Exemple 2 :
M
35
15
15
10
5
N
20
20
5
5
5
PGCD = 5
M=8;n=8

PGCD(8,8) = 8
a. Solution itérative
Analyse de la fonction PGCD :
Algorithme de la fonction PGCD :
Résultat = PGCD
0- Début 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 remplacée par la
différence jusqu’à a=b
2- PGCD  a
3- Fin PGCD
Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim
page-1/9-
Chap 5 : Les algorithmes Arithmétiques
Classe : 4
ème
b. Solution récursive
Algorithme Récursif de la fonction PGCD :
0- Début 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. Méthode 2
PGCD (m, n) = PGCD (n, m mod n) jusqu’à n =0 d’où PGCD = m
Exemple 1:
M = 35 ; n = 20
PGCD (35, 20) = PGCD (20, 15) = PGCD (15, 5) = PGCD (5, 0) = 5
Exemple 2 :
M=8;n=8
PGCD (8, 8) = PGCD (8, 0) = 8
a. Solution itérative :
0. Début fonction Calcul_PGCD (m, n: entier) :
entier
1. Répéter
R  M mod N
M N
N R
Jusqu’à (N = 0)
2. Calcul_PGCD M
3. Fin Calcul_PGCD
b. Solution récursive
function pgcd(m, n: integer): Integer;
begin
if (n=0) then
pgcd := m
else
pgcd := pgcd (n, m mod n) ;
end;
Image2
1. Présentation
Arrangement de P éléments parmi N :
C’est le nombre de permutations ordonnées possibles de P éléments 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-
SI
Chap 5 : Les algorithmes Arithmétiques
Classe : 4
ème
SI
Combinaison de P éléments parmi N :
C’est le nombre de permutations sans ordre possibles de P éléments parmi N.
Exemple avec
{a, b, c} : C(2,3) = 3
{a, b}, {a, c}, {b, c}
2. Calcul de l’arrangement
Un arrangement de P éléments d’un ensemble E à N éléments est un p-uplet
d’éléments distincts de E.
 Le nombre d’arrangements de P éléments de l’ensemble E est représenté par la
notation suivante :
Image1
 N et P sont des entiers qui vérifient la condition suivante : 1≤ P ≤ N
Activité :
Proposez une analyse, puis déduisez les algorithmes correspondants au problème permettant de
chercher puis d’afficher l’arrangement de deux entiers donnés N et P, avec (1≤ P ≤ N).
Analyse du PP
Algorithme du PP
Résultat = Ecrire (" A ( ", n, ",", p, ")=",
FN Arrange (n, p))
0123-
Traitement :
 La fonction arrange permet de
rechercher l’arrangement.
Début arrangement
Proc saisie (n, p)
Ecrire (" A ( ", n,",", p,")=", FN Arrange (n, p));
Fin Arrangement
Algorithme de la fonction Arrange :
0- Début fonction arrange (n, p : entier) : entier
 La saisie de n et p sera la tache de la
procédure saisie.
Analyse de la fonction Arrange:
1- a  1
Pour I de n à (n-p+1) (pas = -1) faire
a a*i
Fin Pour
Résultat =Arrange
2- Arrange  a
Traitement : Arrange  a
3- Fin arrange
[a  1]
Pour i de n à (n-p+1) (pas = -1) faire
aa*i
Fin pour
Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim
page-3/9-
Chap 5 : Les algorithmes Arithmétiques
Classe : 4
ème
SI
3. Calcul de la combinaison
 Une combinaison de P éléments d’un ensemble E de N éléments est une partie de E
formée par P éléments.
 Le nombre de combinaison de P éléments de l’ensemble E est représenté par la
notation suivante : image3
 N et P sont des entiers qui vérifient la condition suivante : 0≤ P ≤ N
Activité :
Proposez une analyse, puis déduisez les algorithmes correspondants au problème permettant
de chercher puis d’afficher la combinaison de deux entiers donnés n et p, avec (0≤ P ≤ N).
Solution Itérative
Analyse du PP
Algorithme du PP
Résultat = 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
procédure saisie.
0123-
Analyse de la fonction Comb:
Début Combinaison
Proc saisie (n, p)
Ecrire (" C ( ", n,",", p,")=", FN Comb (n, p));
Fin Combinaison
Algorithme de la fonction Comb :
0- Début fonction Comb (n, p : entier) : réel
1- Comb  FN Fact(n) / (FN Fact(p) * FN Fact(n-p))
2- Fin Comb
Résultat = Comb
Traitement :
Comb  FN Fact(n) / (FN Fact(p) * FN Fact(n-p))
Solution Récursive
D’après vos connaissances en Mathématiques, vous pouvez dégager la relation suivante :
Image4
Analyse de la fonction Comb:
Algorithme de la fonction Comb :
Résultat = Comb
0- Début fonction Comb (n, p : entier) : réel
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 Arithmétiques
Classe : 4
ème
SI
IV- Quelques règles de divisibilité :
1. Définition:
Un entier n est divisible par un entier m, si le reste de la division euclidienne de n par m est
nul.
Une règle de divisibilité est une séquence d’opérations simples qui permet de reconnaître
rapidement si un entier est divisible par un autre sans qu’il soit nécessaire d’effectuer des divisions.
Ces règles sont généralement appliquées à des grands nombres.
2. Divisibilité par 3 :
Règle : 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 vérifier si un entier n est divisible par 3 et
déduire les algorithmes correspondants.
Analyse du PP
Algorithme du PP
Résultat = Ecrire (n, FN Div_3(n))
0. Début Divisibilite_3
1. Ecrire ("Entrer n :")
Lire (n)
2. Ecrire ("L'entier ",n,Div_3(n))
3. Fin Divisibilite_3
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:
Résultat = Div_3
Traitement : Parcourir la chaîne qui contient le
nombre n et rechercher la somme des chiffres
qui le compose puis tester si cette somme est
divisible par 3
Algorithme de la fonction Div_3 :
0. Début fonction Div_3 (n : entier) : Chaine
1. Convch (n, ch);
2. Répéter
S0
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  " n’est 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 n’est pas divisible par 4 car 43 n’est 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 Arithmétiques
Classe : 4
ème
SI
Activité : Ecrire une analyse modulaire permettant de vérifier si un entier n est divisible par 4
en utilisant la règle de divisibilité précédente et déduire les algorithmes correspondants.
Analyse du PP
Algorithme du PP
Résultat = Ecrire (n, FN Div_4(n))
0. Début Divpar4
1. Ecrire ("Entrer n :")
Traitement :
Lire (n)
2. Ecrire ("L'entier ", n, Div_4(n))
 La fonction Div_4 permet de déterminer 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:
Résultat = 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.
Début 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 unités est égal à 0 ou à 5.
Exemple : 5243 n’est pas divisible par 5 car 3 Є {0,5}
72240 est divisible par 5 car 0 Є {0,5}
Activité : Ecrire une analyse modulaire permettant de vérifier si un entier n est divisible par 5
en utilisant la règle de divisibilité précédente et déduire les algorithmes.
0.
1.
2.
3.
4.
5.
6.
Algorithme de la fonction Div_5
Début Fonction div_5 (n : entier) : chaîne
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
Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim
page-6/9-
Chap 5 : Les algorithmes Arithmétiques
Classe : 4
ème
SI
5. Autre règles de divisibilité :
Un entier est divisible par 2 si son chiffre des unités 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 unités 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 numération :
1. Définition:
Un système de numération est une méthode de comptage fondé sur une base de numération qui
est un entier supérieur ou égal à deux. Soit N une base de numération, le système sera doté de N
chiffres allant de [0 à N-1].
2. Exemples de bases de Numération:
 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 d’un nombre décimal en base b:
Activité : Ecrire une analyse modulaire puis les algorithmes permettant de convertir un
nombre décimal en binaire
Image 5
Solution avec Tableau
Algorithme de la Procédure conv_10_2
0. Procedure Conv_10_2 (N :entier ; var T :tab ;
var i : entier )
1. i 0
Répéter
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  ""
Répéter
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 d’un nombre Hexadécimal en Binaire :
Activité
Ecrire une analyse modulaire puis les algorithmes permettant de convertir un nombre
hexadécimal en binaire.
Image6
Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim
page-7/9-
Chap 5 : Les algorithmes Arithmétiques
Classe : 4
ème
SI
Solution Algorithmique
Algorithme PP
0.
1.
2.
3.
Début Hexa_Binaire
Proc Saisie (ch)
Ecrire ("(", ch,") 16= (", binaire (ch),") 2")
Fin
Algorithme de saisie
Algorithme de la fonction Binaire
0. Fonction Binaire (Ch: chaine):chaine
1. chb ""
Pour I de 1 à long (ch) Faire
Chbchb+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
0. Procédure saisie (var ch: chaine)
1. Repeter
Ecrire
("Donner
un
nombre
Hexadécimal: ")
Lire (ch)
I 1, b Vrai
Repeter
Si ch[i] dans ["0".."9","A".."F"] Alors
II+1
Sinon
B faux
Finsi
Jusqu’à (b=Faux) ou (i>long (ch))
Jusqu’à b;
2. Fin saisie
Algorithme Binaire Chiffre
0. fonction bin_chiffre(c:caractère):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
5. Conversion d’un nombre octal en décimal:
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 Arithmétiques
Classe : 4
ème
SI
Solution Algorithmique
Algorithme PP
0.
1.
2.
3.
Début Octal_Decimal
Proc Saisie(N)
Ecrire ("(", N,") 8= (", Fn Decimal(N),")10")
Fin Octal_Decimal.
Algorithme de la procedure saisie
0. Procédure saisie (var N:entier long)
1. Répéter
Ecrire ("Donner un nombre en binaire: ")
Lire(N)
Convch(N, ch)
I 1 , b Vrai
Répéter
Si ch[i] dans ["0".."7"] Alors II+1
Sinon B faux
Fin si
Jusqu’à (b=Faux) ou (i>long (ch))
Jusqu’à b
2. Fin saisie
Algorithme de la procedure saisie
0. fonction Décimal (N:entier long):entier long
1. Convch(N,ch)
2. s0
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
6. Conversion d’un 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 fonction Octal
0. fonction Octal (ch: chaîne):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)
s0
1. Répéter
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. I1
btrue
Fin Pour
Repeter
Convch(S, ch1)
Si ch[i] dans ["0","1"] Alors i  i+1
ch2  ch1+ch2
Sinon
bfaux
ll-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
Algorithme PP
0. Debut Octal_decimal
1. Proc Saisie (ch)
2. Ecrire ("(", ch, ") 2= (", Octal (ch), ") 8")
3. Fin Octal_decimal
Profs: MSEKNI Dalila, SFAR Hayet & BAFFOUN Rim
page-9/9-
Téléchargement