Так что, конечно, я знаю, что есть простые решения для этого, такие как использование библиотеки GMP или множества других библиотек произвольной точности. Это для работы в классе, поэтому мне не разрешено пользоваться любым из этих маршрутов. После того, как мы создадим все наши операции, мы подойдем к тому, чтобы иметь возможность использовать схему шифрования RSA.
Я использую векторы для хранения n-битных чисел, представленных в двоичном виде. У меня есть преобразования в десятичные числа позже, но я должен работать с двоичными числами и преобразовывать только для отображения.
Я успешно реализовал сложение, вычитание и умножение. Я застрял на делении и модульных операциях... особенно на модульном возведении в степень. Я понимаю алгоритмы, по крайней мере, на базовом уровне, но не могу перевести их в код, который будет работать с числами произвольной длины. Кажется, я не могу найти примеры такой работы, выполненной на С++ без внешних библиотек.
Некоторые конкретные вопросы:
есть ли лучший способ выполнить модуль для n-битного числа, кроме простого вызова функции деления, которую я пишу, и использования возвращаемого остатка?
Мне бы очень хотелось увидеть несколько хороших примеров на С++, так как я вообще не могу хорошо следовать исходному коду GMP.
Будем очень благодарны за любые хорошие ресурсы для изучения или некоторую помощь. Спасибо