Théorème du reste chinois
Si de grands nombres entiers arbitraires apparaissent fréquemment, ou si la représentation de grands nombres entiers dans le langage de programmation cible coûte trop d'octets, vous pouvez envisager d'utiliser le théorème du reste chinois.
Choisissez quelques entiers relativement premiers m i > = 2, et vous pouvez exprimer un grand nombre de 0 à lcm (m 1 , m 2 , ..., m i ) -1
Par exemple, je choisis 2, 3, 5, 11, 79, 83, 89, 97, puis je peux exprimer le nombre inférieur à 18680171730 uniquement. 10000000000 (1e10) peut être exprimé comme 0,1,0,1,38,59,50,49 (1e10 mod 2, 3 ..., 97) qui ne doivent pas être exprimés en tant que classe / structure spéciale Big Integer qui pourrait sauver quelques octets dans un langage de programmation.
L'addition et la soustraction peuvent être effectuées directement à l'aide de cette représentation. Exemple:
(0,1,0,1,38,59,50,49)+(0,2,0,6,23,20,16,53) = 1e10 + 5000
= (0+0 mod 2, 1+2 mod 3, 0+0 mod 5, 1+6 mod 11, 38+23 mod 79, 59+20 mod 83, 50+16 mod 89, 49+53 mod 97)