algorithme de multiplication - (CUI)

publicité
Séminaire Java
6.10.08
ALGORITHME DE MULTIPLICATION*
(connu sous le nom de multiplication à la russe)
Algorithme :
La multiplication de deux nombres entiers positifs peut se faire de la manière suivante:
• Ecrivez le multiplicateur et le multiplicande l’un à côté de l’autre.
• Formez une colonne en dessous de chacun des opérandes en itérant la règle suivante jusqu’à
ce que le nombre sous le multiplicateur soit égal à 1: divisez par deux le nombre sous le multiplicateur, sans tenir compte du reste éventuel, et doublez par addition le nombre sous le
multiplicande. Par exemple, pour multiplier 19 par 45, vous obtenez :
45
22
11
5
2
1
19
38
76
152
304
608
• Finalement, rayez tous les nombre de la colonne du multiplicande correspondant à la ligne
paire sous le multiplicateur. Il ne reste plus qu’à additionner les nombres restants : 19 + 76 +
152 + 608 = 855.
Remarque : cet algorithme, en essence, est la méthode employée dans les circuits électronique
de nombreux ordinateur. Ceci s’explique par le fait qu’avec cette méthode il n’est pas nécessaire de mémoriser de table de multiplication, que la division par deux est très simple à réaliser
avec des circuits électroniques (revient à faire un décalage à droite d’une position binaire) et
que les unités de calcul comprennent forcément un additionneur.
Exercices (à choix):
1) Ecrire un programme qui affiche une table de conversion CHF <-> EURO
2) Ecrire un programme qui affiche une table de conversion degrés Celsius <-> degr. Farenheit
3) Ecrire un programme qui liste les nombres entiers a et b, 0 < a < b < 100, t.q. le résultat de
l’expression (a2 + b2 + 1) / (a + b) est un nombre entier
4) Ecrire un programme Java qui implémente l’algorithme de multiplication décrit ci-dessus
5) Ecrire un programme Java qui convertit un nombre entier en chiffres romains, p.e. 2002
donnera MMII
6) Ecrire un programme qui donne toutes les solutions possibles du puzzle arithmétique cidessous (on affecte un chiffre différent à chacune des 10 lettres):
INFO
Ex de solution: O=0 A=1 I=2 K=3 F=4
2640
+ JAVA
J=5 N=6 L=7 U=8 V=9
+ 5191
------
------
LUKA
7831
*Source : G.Brassard, P.Bratley, algorithmique, conception et analyse, Masson, Paris, 1987.
Luka Nerima
Faculté des lettres
Téléchargement