C'est au détour d'un tweet qu'on découvre une façon accélérée de multiplier 2 nombres sans poser d'addition.
Prenons 73 et 67 dont la multiplication fait 4891. Selon la méthode habituelle, nous avons la décomposition suivante :
73 x 67 ------ 511 + 438 ------ 4891 soit: (60 + 7) * 73 = 10 * (6 * 73) + (7 * 73)
On y voit une multiplication par 10 qui induit une double addition pour déterminer les chiffres du milieu. N'existerait-il pas une méthode sans retenue en ayant une forme AA*100+BB
avec AA
et BB
obtenus séparément à partir des seuls nombres initiaux ?
La vidéo nous dit que oui. On va poser le calcul à l'envers pour vérifier la règle générale et aller plus loin.
Soit X
et Y
les deux nombres à multiplier et k
une constante indéterminée. L'égalité suivante se contente d'ajouter des termes dont la somme est nulle :
X*Y = X*Y + (kX - kX) + (kY - kY) + (k²-k²)
Réarrangeons ces termes pour trouver des identités remarquables :
= (kX + kY - k²) + (k² - kX - kY + X*Y) = k * (X + Y - k) + (k - X) * (k - Y) = k * (X - (k - Y)) + (k - X) * (k - Y)
Cette présentation du résultat est intéressante. Dans l'idée d'avoir k=100
pour notre exemple, on a AA=X-(k-Y)
et BB=(k-X)*(k-Y)
. Soustraire X
et Y
de k
est très facile à calculer, et AA
ainsi que BB
se calculent séparément. Il faut surtout que k
soit une puissance de 10 (10n) immédiatement supérieure à X
et Y
.
Bien entendu, ce n'est pas si simple, car si le terme BB
dépasse 100, il y aura une addition à faire pour avoir la valeur définitive de AA
. Dans la vidéo, ils ont pris 97 et 94 dont la multiplication des termes soustraits de 100 font 18, donc moins que 100. On peut vérifier que ça marche :
X = 97 Y = 94 k = 100 k-X = 3 k-Y = 6 AA = X-(k-Y) = 97-6 = 91 BB = (k-X)*(k-Y) = 3*6 = 18 AABB = X*Y = 9118
Dans notre exemple, comme il existe une bien plus grande différence de X
et Y
avec k
, le terme BB
excède 100. Il faut faire des calculs supplémentaires, ce qui réduit l'intérêt de la méthode dans ce cas précis. La formule fonctionne malgré tout :
X = 73 Y = 67 k = 100 k-X = 27 k-Y = 33 AA = X-(k-Y) = 73-33 = 40 BB = (k-X)*(k-Y) = 27*33 = 30*33 - 3*33 = 990-99 = 891 AABB = X*Y = 4891
L'addition n'a été utilisée que pour fusionner les termes AA
et BB
lorsque l'écart de X
et Y
avec k
est trop grand.
En terme de calcul informatique, cette méthode n'a aucun avantage particulier. Elle est juste humainement plus simple dans certains cas très précis.