Несколько способов оптимизировать алгоритмы деления больших чисел на малые:
- Использовать подход «разделяй и властвуй». 1 Можно настроить размеры начальных цифр чисел, чтобы получить наилучшие результаты. 1 Например, наилучшие результаты можно достичь, если в начальных цифрах первого числа (x') в два раза больше цифр, чем во втором (y'). 1
- Сократить число проверок. 3 При сравнении больших чисел часто выполняется вычислительно сложная проверка для всех слов и на каждой итерации. 3 Количество проверок можно уменьшить, используя приближённое сравнение больших целых чисел. 3
- Заменить два деления одним. 4 Можно посчитать только целую часть от деления, а затем уже посчитать по ней остаток от деления с помощью одной операции умножения. 4
- Использовать длинную арифметику в факторизованном виде. 4 Можно хранить не само число, а его факторизацию, то есть степени каждого входящего в него простого. 4 Этот метод экономит память и позволяет производить умножение и деление значительно быстрее. 4
- Использовать длинную арифметику по системе простых модулей. 4 Можно выбрать систему модулей (обычно небольших, помещающихся в стандартные типы данных) и хранить число в виде вектора из остатков от его деления на каждый из этих модулей. 4
Для оптимизации алгоритмов деления больших чисел на малые важно измерять пороговые значения и использовать более быстрый подход к используемому количеству битов. 1