Китайская теорема об остатках
Если часто появляются произвольные большие целые числа или если большое целочисленное представление в целевом языке программирования стоит слишком много байтов, вы можете использовать китайскую теорему об остатках.
Выберите несколько попарно относительно простых чисел m i > = 2, и вы можете выразить большое число от 0 до lcm (m 1 , m 2 , ..., m i ) -1
Например, я выбираю 2, 3, 5, 11, 79, 83, 89, 97, тогда я могу однозначно выразить число меньше 18680171730. 10000000000 (1e10) можно выразить как 0,1,0,1,38,59,50,49 (1e10 mod 2, 3 ..., 97), которые не нужно выражать как специальный класс / структуру Big Integer, которые могут сохранять несколько байтов в некотором языке программирования.
Сложение и вычитание могут быть сделаны непосредственно с использованием этого представления. Пример:
(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)