1-- Définition récursive de la multiplication en utilisant seulement des additions et des divisions par 2
multRusse :: Int -> Int -> Int
multRusse x y
| x == 0 = 0
| even x = multRusse (x `div` 2) (y * 2)
| otherwise = y + multRusse (x `div` 2) (y * 2)
2-- Fonction qui calcule le produit de deux entiers naturels en utilisant la technique de multiplication russe
produit :: Int -> Int -> Int
produit x y = multRusse x y
La fonction multRusse permet de calculer la multiplication en utilisant uniquement des additions et des divisions par 2. Elle utilise la propriété xy=(x/2) 2y si x est pair. La fonction est définie de manière récursive en vérifiant si x est pair ou impair. Si x est pair, on divise x par 2 et on multiplie y par 2. Si x est impair, on ajoute y au résultat de la multiplication de (x-1) et (y*2).
La fonction produit utilise la fonction multRusse pour calculer le produit de deux entiers naturels en utilisant la technique de multiplication russe. Elle prend deux entiers naturels en entrée et retourne leur produit.