Cela fait quelques mois que je me demande pourquoi il n'est pas possible de diviser par zéro, et que je me rends compte que la plupart des gens ne le savent pas, et ne veulent pas le savoir. On ne peut pas, c'est tout. Du coup j'ai implémenté mon propre algorithme de division, en Haskell, basé sur les entiers naturels de Peano, que j'ai réinventé pour l'occasion, car je préfère toujours ma roue à celle du voisin. Mais je ne vais pas vous ennuyer avec du code source. En ce qui concerne la division euclidienne, on pourrait reformuler la question "quel est le résultat de x divisé par y ?" par la question "combien de fois peut on soustraire y à x, et que reste t-il de x ?". "10 / 3 = 3 et il reste 1" pourrait se formuler "on peut soustraire 3 fois 3 à 10 et il reste 1". Alors allons y et demandons nous "combien de fois peut on soustraire 0 à 10, et combien reste t-il ?". La réponse est bien sur "on peut soustraire à l'infini 0 à 10 et il restera 10" puisque l'on n’enlève jamais rien à 10. D'ailleurs c'est facilement vérifiable, puisque "infini * 0 + 10 = 10". Et bien non, ce n'est pas possible. C'est le reste qui pose un problème. On ne pourra jamais le calculer, puisque nous n’arrêterons jamais de soustraire 0 à 10. Or la division euclidienne doit retourner le quotient ET le reste. On pourrait calculer le quotient puis en déduire le reste "10 - 0 * infini = 10" mais pour cela il faudrait deux opérateurs, le premier pour calculer le quotient et le second pour calculer le reste. Mais ça ne serait plus une division euclidienne.Pour les plus curieux, le code source est ici.
Super article, merci ;)