Выглядит привлекательной идея вести перебор по
. В этом случае наиболее затратной операцией является факторизация
.
С другой стороны, мы ищем только такую факторизацию
, у которой
делится на
(точнее, конечная цель — чтобы оно делилось на
). То есть, если
, то должно быть
. Далее, поскольку
, нас устраивает только такой остаток
, для которого
является квадратичным вычетом по тому же модулю
.
На конкретном примере:
. Мы должны искать такие сомножители
, что остатки от деления
и
на
противоположны (пусть будут
и
) и
(точнее, в задаче нам нужно
, но мы пока ищем там, где светлее). Для
таких
всего четыре:
,
,
,
. Т.е. мы должны искать сомножители
и
, которые имеют только эти 4 остатка при делении на
. В данном примере действительно, есть такое разложение:
. Видно что сомножители имеют при делении на
противоположные остатки
, поэтому их сумма делится на
(и даже на
, но не на
, как нам надо). Могут ли эти соображения как-то радикально сократить время факторизации, да и можно ли вообще быстро отыскать нужные квадратичные вычеты — для меня тёмный лес.
-- Вс мар 17, 2024 14:37:50 --Можно показать, что остаток от деления
на
равен 4 либо 13. Это, конечно, даёт сокращение перебора на порядок, но такое сокращение я не назову радикальным.