logo
Рожков_Ниссенбаум_ТЧМК_лекции

2.1. Метод пробных делений.

Этот метод является методом специального назначения и рекомендуется для отсеивания маленьких делителей на первом шаге. Если известно, что число не имеет малых делителей (например, модуль RSA), то этот метод не стоит применять.

Прежде чем приступать к факторизации числа этим методом, следует выделить все степени двойки и тройки.

Задается некая теоретическая граница B ≤, которая задает максимальную величину испытываемых делителей и обусловливается доступным объемом памяти и вычислительными возможностями, а также некоторыми априорными сведениями о структуре числаn.

Если В невелико, то строим заранее таблицу простых чисел, меньших или равных В и проверяем делимость n на эти числа.

Иначе выбираем числа d1=5, d2=5+2=7, d3=d2+4=11, d5=d4+2, … , dk > B. (чередуем шаг +2 и +4 с тем, чтобы отсеять числа, кратные «2» и «3»).

Эти d1, … , dk являются возможными делителями n. Осуществляем пробные деления на di (i = ). При этом действия осуществляются в следующем порядке:

Для каждого i:

Ш.1. Генерируем di.

Ш.2. Осуществляем пробное деление на di. Если di\n, то n=n/di и повторяем

Шаг 2. Если di не делит n, то идем на Шаг 3.

Ш.3. Уничтожаем di, освобождаем память.

Заметим, что все малые делители, выделенные вышеуказанным способом, будут простыми.