Научная литература
booksshare.net -> Добавить материал -> Математика -> Коблиц Н. -> "Курс теории чисел и криптографии" -> 85

Курс теории чисел и криптографии - Коблиц Н.

Коблиц Н. Курс теории чисел и криптографии — Москва: Научное изд-во ТВП, 2001. — 254 c.
Скачать (прямая ссылка): theory-chisel-kriptographii.djvu
Предыдущая << 1 .. 79 80 81 82 83 84 < 85 > 86 87 88 89 90 91 .. 125 >> Следующая


Доказательство. Применим предложение V. 4. 2 при х = у/п. Тогда Ьг = bj — nCj (mod п), а это последнее число меньше 2\/п по абсолютной величине.

Предложение V. 4. 3 — ключевое для алгоритма цепных дробей. Оно показывает, что можно найти последовательность чисел bj, квадраты которых имеют малые вычеты по модулю п. Для этого нужно брать числители приближений при разложении \/п в цепную дробь. Заметим, что нам нужно находить не сами приближения, а только их числители 6,, и то лишь по модулю п. Поэтому быстрый рост числителей и знаменателей приближений не является препятствием. Нам никогда не придется работать с числами, большими п (при умножении чисел по модулю п).

Опишем теперь последовательно, как работает алгоритм цепных дробей. Он отличается от метода факторных баз из § 3 лишь использованием предложения V.4.3 вместо случайного выбора чисел 6,.

Алгоритм разложения на множители при помощи цепных дробей. Пусть п — целое число, которое нужно разложить на

178

ГЛ. V. ПРОСТОТА И ФАКТОРИЗАЦИЯ

множители. Все вычисления будем проводить по модулю п, т.е. произведения и суммы целых чисел будем приводить по модулю п к их наименьшему неотрицательному вычету (или к наименьшему абсолютному вычету в шаге 3). Вначале полагаем b_\ = 1, b0 = а0 = [л/п],

2 2

Xo = урп - о-о- Вычисляем 6о (mod п) (фактически 60 - п). Далее для г = 1,2,.. . последовательно выполняем следующие действия.

1) Полагаем Oj = [1/Xj-1] и затем х{ = \/хі_\ — аг-.

2) Полагаем 6j = OjOj-1 + bj_2 (приводим по модулю п).

3) Вычисляем bj (mod п). Проделав это для нескольких і, обращаем внимание на те из чисел на шаге 3, абсолютная величина которых представляется в виде произведения малых простых чисел. Пусть факторная база В состоит из -1 и простых чисел, которые встречаются более чем в одном из bi (mod п) (или входят только в одно из 6j (mod ті) в четной степени). Составляем список всех тех чисел bi (mod п), которые являются Б-числами, и соответствующих векторов ?j из нулей и единиц. Если возможно, находим подмножество векторов с нулевой суммой. Полагаем 6 = Г] 6г- (проводя вычисления по модулю п; произведение берется по подмножеству с = 0). Полагаем с = Y[p]}, где Pj — элементы из В (исключая — 1), и jj = j ^ etij (где сумма берется по тому же подмножеству индексов г, см. § 3). Если Ь ф ±с (mod п), то НОД (6 + с, п) — нетривиальный делитель п. Если b = ±с (mod п), то ищем другое подмножество индексов і, для которого ^ Ei = 0. Если невозможно найти такое подмножество индексов і, что ^T1 Ei = 0, то нужно продолжать, вычисляя новые ?j, 6j, bi (mod п) и при необходимости расширяя факторную базу В.

Замечание. Чтобы упростить вычисление с = Yl Pj1 > удобно для каждого Б-числа b\ (mod п) записывать вектор ojj = (..., аі;-,...), а не Ei, который представляет собой вектор а,-, приведенный по модулю 2.

Пример 2. Используем изложенный алгоритм для разложения 9073 на множители.

Решение. Вначале выпишем по порядку aj и Ь; (где 6j — наименьший неотрицательный вычет a^i-i +bj_2 по модулю п), а также наименьшие абсолютные вычеты bj (mod п):

0
1
2
3
4

95
3
1
26
2

95
286
381
1119
2619

-48
139
-7
87
-27

Рассматривая последнюю строку таблицы, мы видим, что в качестве В разумно взять множество {-1,2,3,7}. Тогда b\ (mod п) — В-

§ 4. МЕТОД ЦЕПНЫХ ДРОБЕЙ

179

числа при і = 0,2,4. Соответствующие векторы равны (1,4,1,0), (1,0,0,1) и (1,0,3,0). Сумма первого и третьего — нулевой вектор по модулю 2. Поэтому полагаем Ь = 95 ¦ 2619 ее 3834 (mod 9073) и с = 22 • З2 = 36. Таким образом, 38342 ее 362 (mod 9073). Так как 3834 ее 36 (mod 9073), мы получаем нетривиальный делитель: НОД (3834 + 36, 9073) = 43. Итак, 9073 = 43 • 211.

Пример 3. Разложить на множители 17873.

Решение. Как и в примере 2, мы начинаем с таблицы:

і 0 1 2 3 4 5

аг 133 1 2 4 2 3

Ь; 133 134 401 1738 3877 13369

Ъ\ (mod п) -184 83 -56 107 -64 161

Если положить В = { — 1,2,7,23}, то Б-числа получаются при г = 0,2,4,5; соответствующие векторы сц равны (1,3,0,1), (1,3,1,0), (1,6,0,0) и (0,0,1,1). Сумма 1-го, 2-го и 4-го из этих векторов — нулевой вектор по модулю 2. Однако если вычислить Ь = 133 ¦ 401 • 13369 ее 1288 (mod 17873) и с = 23 • 7 • 23 = 1288, то окажется, что Ь ее с (mod 17873). Поэтому приходится продолжить поиск Б-чисел, которым соответствуют векторы с суммой, равной нулю по модулю 2. Продолжая таблицу, получаем:

і 6 7 8

а{ 12 1

Ьг 17246 12115 11488

Ъ] (mod п) -77 149 -88

Если мы теперь расширим В, включив туда еще простое число 11, т.е. В = {-1,2,7,11,23}, то для г = 0,2,4,5,6,8 получаем Б-числа со следующими векторами q^: (1,3,0,0,1), (1,3,1,0,0), (1,6,0,0,0), (0,0,1,0,1), (1,0,1,1,0), (1,3,0,1,0). Замечаем, что сумма 2-го, 3-го, 5-го и 6-го векторов равна нулю по модулю 2. Это дает Ь = 7272, с = 4928, и мы находим, наконец, нетривиальный делитель: НОД (7272 4- 4928,17873) = 61. Таким образом, 17873 = 61 • 293.

УПРАЖНЕНИЯ

1. Найти представление в виде цепной дроби следующих рациональных чисел: а) 45/89; б) 55/89; в) 1,13.
Предыдущая << 1 .. 79 80 81 82 83 84 < 85 > 86 87 88 89 90 91 .. 125 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed