Comment calculer le modulo de grands nombres ?L'opération modulo est bien connue en informatique, pour son utilisation dans le cadre de comptage cycliques, tels que des calculs de hash, de remplissage de buffers circulaires ou encore pour le calcul de clefs de contrôle (Check Digit). L'opérateur Mod de Visual Basic permet de réaliser sans mal cette opération pour les types de données natifs. Néanmoins, celui-ci ne suffit pas dans le cadre de calculs sur de (très) grands nombres. Cet article présente une méthode pour réaliser une telle opération. Les propriétés mathématiques du modulo nous assurent que
Nous utiliserons ce résultat dans le code suivant, pour évaluer l'opération modulo, dans le cadre d'un grand dividende, représenté sous forme de chaîne de caractères, et d'un diviseur typé Long. Ceci permet une manipulation plus aisée du résultat, puisque le même type peut lui être appliqué. '--------------------------------------------------------------------------------------- L'exemple suivant montre l'utilisation de cette fonction au travers d'un exemple concret : ' Exemple : Calcul de la validité d'une clé INSEE Remarques généralesL'opérateur Mod ne travaille que sur des types Byte, Integer ou Long, limitant effectivement à 2147483647 le plus grand nombre utilisable dans une telle opération. Il est aussi à remarquer que l'utilisation du type double est à proscrire pour des grands nombres : ceci est du au mode de représentation utilisé, qui ne permet pas une précision arbitraire. Les grands nombres en particulier seront "arrondis" à la plus proche valeur représentable, souvent différente du nombre de départ. Voir aussi : |
Date de publication : 11 septembre 2008 Dernière modification : 11 septembre 2008 Rubriques : Math Mots-clés : modulo, grand nombre, nombre, reste, division, dividende, diviseur, validation, check, digit, mod, insee |