Добрый день, в этом посте я бы хотел затронуть тему факторизации целых чисел.
Подход к факторизации целых чисел, может быть гипотетически основан на подборе остатков
по модулю простых чисел
для множителей
, составляющих число
.
Попытаюсь тезисами и на примере, описать суть метода:
1) Любое число может быть представлено произведением:
;
2) Числа
, имеют остатки по модулям простых чисел
;
3) Причем количество простых чисел
, взятых в качестве базиса будет ограничено произведением этих простых чисел
, результат, которых превышает
.
т.е.
Далее объясню на примере:
Базис простых чисел
ограничен:
,
так как:
Далее для
:
:
:
Т.е. получится:
Грубо говоря для каждой строчки выполняется уравнение:
где,
- модуль простого числа
- остатки по модулю простого числа
- "База" по модулю простого числа
Имея верные
для каждого
- можно "вычислить" множители
, решая систему уравнений по модулю, используя Китайскую теорему об остатках.
https://ru.wikipedia.org/wiki/%D0%9A%D0 ... 0%B0%D1%85Сам подбор пар для
относительно прост и может быть сгенерирован сервисом wolfram alpha.
Пример для:
https://www.wolframalpha.com/input/?i=pq+mod+3+%3D+1 Аналогично, можно вписать другие модули
и остатки
.
Главная проблема состоит в том, чтобы подобрать верные
для каждого
, да так чтобы проверка представляла собой алгоритм с полиномиальной сложностью.
Итак, рассмотрим пример для
Мы можем получить остаток 1 по модулю 3, только в двух случаях:
1)
2)
Именно для
и
мне удалось найти способ, как быстро проверить, какая пара
используется для данного соотношения:
Для этого я нахожу решения для уравнения:
Чтобы найти решения быстро, я применяю алгоритм Корначи:
https://en.wikipedia.org/wiki/Cornacchia%27s_algorithmЕсли решения в целых числах есть, то
, если нет, то
А теперь интересующие вопросы:
1) Можно ли доказать что при случае
, всегда имеются решения? Не нашел контрпримера.
2) Какая существует квадратичная форма для второй пары
. Мне не удалось найти (возможно их несколько).
Интуитивно понимаю, что разобравшись в данных вопросах можно перейти к другим остаткам
и модулям
Заранее, спасибо!