Я пытаюсь понять алгоритм квадратного сита.
В настоящее время я застрял в части просеивания.
Допустим, нужно разложить на множители число 9788111. Я решаю поискать 50-гладкие множители.
Моя исходная факторная база (FB) = $p_i$ = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47}.
Я просматриваю каждый номер в FB и их полномочия.
Для каждого числа в FB я сначала проверяю, является ли N квадратичным остатком по модулю числа (т. е. является ли N QR $\pmod{p_i}$. Если да, то я нахожу корни.
Для 2 тривиально проверить, является ли N QR $\pмод 2$. Вы также можете расширить это для степеней 2. Для других простых чисел вы можете использовать критерии Эйлера для квадратичных остатков, чтобы проверить, является ли N QR $\pmod{p_i}$. Если это QR, вы можете использовать Tonelli-Shanks, чтобы найти корни, а затем просеять с этим простым числом.
Что я делаю для основных полномочий? Для экв. $5^2$, как мне проверить, если $t^2 \экв N \pmod {5^2}$ есть решение? Есть ли какой-нибудь тест или правило, чтобы проверить это, прежде чем я попытаюсь найти корень?
Для небольших простых степеней, таких как $5^2$, может быть возможно найти проверку вручную, если N является QR $\pmod {{p_i}^n}$, но как это сделать для больших простых степеней?