Twierdzenie o chińskiej reszcie
Jeśli często pojawiają się arbitralne duże liczby całkowite lub reprezentacja dużej liczby całkowitej w docelowym języku programowania kosztuje zbyt wiele bajtów, możesz rozważyć użycie twierdzenia o chińskim reszcie.
Wybierz kilka par względnie pierwszych liczb całkowitych m i > = 2, a możesz wyrazić dużą liczbę od 0 do lcm (m 1 , m 2 , ..., m i ) -1
Na przykład wybieram 2, 3, 5, 11, 79, 83, 89, 97, a następnie mogę jednoznacznie wyrazić liczbę mniejszą niż 18680171730. 10000000000 (1e10) można wyrazić jako 0,1,0,1,38,59,50,49 (1e10 mod 2, 3 ..., 97), które nie muszą być wyrażane jako specjalna klasa / struktura Big Integer, która mogłaby zaoszczędzić niektóre bajty w jakimś języku programowania.
Dodawanie i odejmowanie można wykonać bezpośrednio przy użyciu tej reprezentacji. Przykład:
(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)