Multiplication sans *⚓︎
Programmer la fonction multiplication
:
-
prenant en paramètres deux nombres entiers
a
etb
, -
renvoyant le produit de ces deux nombres.
Exemples
>>> multiplication(3, 5)
15
>>> multiplication(-4, -8)
32
>>> multiplication(-2, 6)
-12
>>> multiplication(3, -4)
-12
>>> multiplication(-2, 0)
0
Contrainte
Les seules opérations autorisées sont l'addition et la soustraction !
Indications
-
On rappelle que si \(n\) est un nombre négatif, \(-n\) est un nombre positif.
-
On a \(5 \times (-3) = -5\times 3=0 +(- 5)+(- 5)+(- 5)\) !
def multiplication(a, b):bksl-nl ...bksl-nlbksl-nlbksl-nl# Testsbksl-nlassert multiplication(3, 5) == 15bksl-nlassert multiplication(-4, -8) == 32bksl-nlassert multiplication(-2, 6) == -12bksl-nlassert multiplication(3, -4) == -12bksl-nlassert multiplication(-2, 0) == 0bksl-nlbksl-nldef multiplication(a, b):bksl-nl if b < 0:bksl-nl b = -bbksl-nl a = -abksl-nlbksl-nl somme = 0bksl-nl for i in range(b):bksl-nl somme += abksl-nlbksl-nl return sommebksl-nlbksl-nlbksl-nl# Testsbksl-nlassert multiplication(3, 5) == 15bksl-nlassert multiplication(-4, -8) == 32bksl-nlassert multiplication(-2, 6) == -12bksl-nlassert multiplication(3, -4) == -12bksl-nlassert multiplication(-2, 0) == 0bksl-nlbksl-nl
A
Pour effectuer le produit \(a\times b\) on distingue deux cas de figures :
- \(b \ge 0\) : dans ce cas, on se contente d'additionner \(b\) fois le nombre \(a\) à \(0\),
- \(b \lt 0\) : dans ce cas, on reporte le signe de \(b\) sur \(a\). \(-b\) devient positif et \(a\) change de signe. Il reste alors à additionner \(-b\) fois le nombre \(-a\) à \(0\).
Ainsi :
- \(2\times 3 = 0+2+2+2=6\)
- \(-2\times 3 = 0+(-2)+(-2)+(-2)=-6\)
- \(2\times -3 = 0+(-2)+(-2)+(-2)=-6\)
- \(-2\times -3 = 0+(+2)+(+2)+(+2)=6\)
Z