To
maxal
Да, формально это система счисления
и очень известная так сказать
со времен основной теоремы
.
Но, к сожалению, она не сильно ускоряет расчеты - даже обычное умножение произвольного числа.
Тоесть умножаемые числа надо сначало либо факторизовать полностью (что при
больших числах ....), а потом умножить, либо сразу умножить обычным
способом.
В чистом виде она даже не используется в алгоритмах факторизации.
Вы видимо имели ввиду самый мощный на сегодняшний день алгоритм
факторизации решета числового поля. Но даже там число пытаются
представить в виде некоего максимально факторизованного числа в приведенном
Вами виде произведений небольших простых чисел в соответствующих степенях плюс
некоторое небольшое число (только так можно искать максимально факторизованный
фрагмент суммы). А при прямом использовании этого выражения - произвольное число,
а особенно фактор RSA, будет представлять из себя просто это простое число в первой степени
либо практически нефакторизуемые произведения. Тоесть задача предварительной
подготовки по сложности сопоставима с самой задачей умножения, если конечно теоретически не
искать произведения в поле максимально факторизованных чисел с заданным
множеством базисных простых чисел. То есть, приведенная Вами система записи через множители
-практической реализации при умножении произвольного числа с заранее неизвестными факторами
по быстроте не привосходит даже обычное умножение (ну если вдруг все факторы маленькими
не окажутся).
Спасибо что привели этот пример, так как для дискуссии он полезен и
его модификация (плюс некоторое число к произведению) действительно позволяет
построить многие полезные алгоритмы для обратных задач.
Но я ищу системы счисления, которые позволяют действительно ускорить
целочисленные вычисления с учетом времени предварительной подготовки числа.
Например в СОК предварительная подготовка чисел делением по модулю практически
мгновенна (деление, а особенно на малые числа значительно быстрее, чем умножение больших
чисел). Далее можно умножить хоть миллион таких чисел, и достаточно быстро
восстановить результат (умножение малых чисел (одно-двухразрядовых) на большие тоже быстро). Сложность будет
пропорционально числу чисел и разряду чисел, что значительно быстрее обычного умножения и
немного даже быстрее БПФ. А БПФ имеет еще и вероятность ошибки при заниженной точности
вещественных коэффициентов, а здесь этого нет. Например числа Мерсенна давно ищуться
при привышении предела вероятности для отсутствия ошибки умножения из-за округления коэффициентов
преобразования (ограничения компьютера на разрядность при быстрых операциях с вещественными числами). Вероятность
ошибки правда еще невелика, но как знать, может несколько чисел уже пропущено из-за этого.
К сожалению СОК не может сменить БПФ при поиске чисел Мерсенна, так как там нужно умножение по
модулю, а СОК в этом совсем не конкурент модифицированному БПФ.
Так, что поиск продолжается.