Séminaire Java 6.10.08
Luka Nerima Faculté des lettres
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 mul-
tiplicateur, 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 19
22 38
11 76
5 152
2 304
1 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éces-
saire 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 (a
2
+ b
2
+ 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 ci-
dessous (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.