Vous êtes sur la page 1sur 5

Algo & Prog

Classe : Bac Sciences de l’informatique

Série 20 :
S

---------------------------------
Nom du Prof : M. Maher BEN SALAH
Exercice 1 35 min

1
Exercice 2 35 min

Le plus grand commun diviseur de deux entiers a et b appelé PGCD est le plus grand entier per-
mettant de diviser a et b. pour calculer le PGCD de deux nombres a et b en utilisant la méthode
d’Euclide, on utilise le principe suivant :

Tant que b≠ 0 ; remplacer a par b et remplacer b par a mod b.

Le PGCD est égal à la dernière valeur atteinte de a.

On se propose de calculer le PGCD de N entiers positifs déjà stockés dans la dernière ligne d’une
matrice carrée M.

Pour toutes les (N-1) lignes qui précèdent la dernière ligne déjà remplie, la valeur de chaque case
est obtenue en calculant le PGCD des deux cases du dessous.

M [1 , 1] désigne le PGCD à chercher et à afficher.

Exemple : pour n = 4 :
8 = PGCD(72,56)
M Dernière ligne déjà
2
remplie
4 2 2 = PGCD(56,22)

12 8 2
84 72 56 22 84 22
72 56

Ainsi le PGCD (84, 72, 56, 22) = 2


Travail demandé :

1. Ecrire l’algorithme d’un module qui détermine le PGCD de deux entiers A et B en


utilisant la méthode d’Euclide.
2. Ecrire un module qui détermine le PGCD de N entiers déjà rempli dans la dernière
ligne d’une matrice carrée M comme décrit ci-dessus.

2
Exercice 3 45 min

La « multiplication Russe » est une méthode particulière permettant la multiplication de deux en-
tiers A et B en utilisant seulement la multiplication par 2, la division par 2 et l’addition.

Le produit de A par B se fait comme suit :

1. Remplacer A par A DIV 2 et remplacer B par B*2.


2. Refaire les étapes 1 et 2 jusqu’à avoir A = 1.

Le résultat de la multiplication Russe de A par B est la somme des valeurs de B qui sont en face
des valeurs impaires de A.

Exemple 1 : pour A =17 et B = 19, le produit de A par B se fait comme suit :

Valeurs de A Valeurs de B
- Les valeurs impaires de A sont : 17 et 1
17 19
8 38 - La somme des valeurs de B qui sont en face de 17
4 76 et de 1 est égale à : 19 + 304 = 323.
2 152 Ainsi A * B = 323.
1 304
Exemple 2 : pour A =14 et B = 15, le produit de A par B se fait comme suit :

A B
- Les valeurs impaires de A sont : 7 et 3 et 1
14 15
7 30 - La somme des valeurs de B qui sont en face de 7, 3 et 1
3 60 est égale à : 30 + 60 + 120 = 210.

1 120
Ainsi A * B = 210.

On se propose d’écrire un programme qui :

➢ Demande à l’utilisateur de saisir un entier N (3 ≤ N ≤ 20 )


➢ Remplir un tableau T1 par N expressions de multiplication (une expression ne contient que
des chiffres et des opérateur ‘*’ )

3
➢ Générer, à partir de T1, un tableau T2 de N enregistrements où chaque enregistrement con-
tient deux champs :
• Op : l’opération à calculer
• Res : le résultat d’évaluation de l’opération obtenu en utilisant la multiplication
Russe
➢ Afficher les expressions dans l’ordre croissant de leurs résultats d’évaluation.

Exemple : pour N = 4 et pour le tableau T1 suivant :

T1 2*23*16*9 17*19 5*6 14*15*8


0 1 2 3
Le programme génère le tableau T2 :

2*23*16*9 6624 17*19 323 14*15*8 1680


T2 5*6 30
Op Res Op Res Op Res
Op Res
0 1 2 3
Puis affiche les expressions dans l’ordre :

5*6

17*19

14*15*8

2*23*16*9

Travail demandé :
1) Donner les structures de données adéquates pour résoudre ce problème.

2) Ecrire un algorithme modulaire permettant de résoudre ce problème.

3) Donner les algorithmes des modules envisagés.

Vous aimerez peut-être aussi