Один из способов получить быстрое вычисление bignum - использовать высокие значения для базы.
В качестве примера рассмотрим сумму
12301922342343 +
39234932348823
--------------
51536854691166
При выполнении этого вычисления вручную вы начинаете с самого правогоцифру и сложите их, помня «перенос», если результат превысит 9. Справа налево 3 + 3 = 6, 4 + 2 = 6, 3 + 8 = 1 + перенос 1, 2 + 8 + 1 = 1+ нести 1 и т. д.
Однако вы можете сделать вычисления в виде нескольких цифр ... например,
012 301 922 342 343 +
039 234 932 348 823
-------------------
051 536 854 691 166
Это то же вычисление, что и раньше, но теперь яЯ использую базу 1000 вместо базы 9 (цифры идут от 000 до 999), и я могу использовать тот же подход.Самая правая цифра - 343 + 823 = 166 переноса 001, 342 + 384 + 001 = 691, 922 + 932 = 854 переноса 001 и т. Д.
Для возможности простого умножения (необходимо также для алгоритма деления)) разумный выбор для базы с 32-разрядными целыми числами - 9999, поскольку 9999 * 9999 по-прежнему меньше 2 ** 32 и поэтому может быть вычислен напрямую без переполнений.
Использование базы в форме 10 ** n позволяет легко распечатывать результаты в десятичном виде по одной цифре за раз.