Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[247]

2d \gets 1

3for i \gets к downto О

4do х \gets d

5d \gets (d\cdot d) \bmod n

6if d=l и $x\ne 1$ и $x\ne n-l$

7then return true

8if b i=l

9then d \gets (d \cdot a) \bmod n

10if d\ne 1

11then return true

12return false

Вот как происходит эта проверка. В строке 1 число га - 1 переводится в двоичную систему. Это представление нужно, чтобы вычислять an~l mod п методом повторного возведения в квадрат (строки 3-9). Это делается тем же способом, что и в процедуре Modular-Exponentation, но заодно в строках 6-7 проверяется, не наткнулись ли мы на нетривиальный корень из 1. Если наткнулись, то продолжать дальше вычисление an~l mod п нет смысла, мы и так знаем, что число п составное; процедура Witness возвращает значение true. Если этого не произошло, возведение в степень заканчивается с результатом d и в строках 10-11 мы проверяем, равно ли d единице по модулю п. Если нет, то число п также составное (процедура возвращает значение true). Если нет, то возвращается значение false («число а не является свидетелем того, что п составное»).

В каком случае процедура Witness (а, га) возвращает значение true? В двух - либо имеется нетривиальный корень из 1 по модулю га, либо не выполнена малая теорема Ферма (число га не является пвсевдопростым по основанию а). В обоих случаях число га является составным.

Приведём теперь полностью вероятностный алгоритм Миллера - Рабина.

1for j \gets 1 to s

2do a \gets Random(1,n-1)

3if Witness(a,n)

4then return составноезаведомо

5return простоепочти наверняка

Процедура Miller-Rabin берёт s случайных чисел от 1 до га - 1 и проверяет, не является ли какое-то из них свидетелем того, что га - составное (в описанном выше смысле). Если является, то число га заведомо является составным, и об этом можно сообщить в строке 4. Если ни одно из выбранных чисел не является свидетелем, то выдаётся ответ «простое», хотя гарантии тут нет. (Мы оценим далее, насколько вероятен такой ответ при составном га.)


Для примера рассмотрим работу этого алгоритма для числа 561 (которое, как мы говорили, является числом Кармайкла 561). Для этого вернёмся к рис. 33.4, который соответствует вычислениям для а = 7. При последнем возведении в квадрат процедура обнаруживает нетривиальный корень из 1, поскольку 7280 = 67 (mod 561) и 7560 = 1 (mod 561). Тем самым значение а = 7 является свидетелем того, что число 561 составное: Witness(7, 561) = true. Если а = 7 встретится среди s случайных значений, выбранных в алгоритме Miller-Rabin, то алгоритм выдаст ответ «составное».

Если двоичная запись га содержит fi битов, то процедура Miller-Rabin(s, га) выполняет O(sfi) арифметических (и 0(s/33) битовых) операций (производится не более s операций возведения в степень).

Оценка вероятности ошибки для теста Миллера - Рабина.

Сообщая, что число га является простым, процедура Miller-Rabin (как и Pseudoprime) может ошибаться. Но тут есть важная разница. Процедура Pseudoprime давала неправильный ответ для некоторой (пусть небольшой) доли всех чисел - такие числа можно назвать «плохими» с точки зрения этой процедуры. Для теста Миллера - Рабина плохих чисел нет: для любого числа тест даёт правильный ответ с большой вероятностью. Плохим может быть лишь случайный выбор пробных свидетелей, и вероятность этого события мала.

Как мы сейчас докажем, для любого составного числа га не менее половины всех возможных значений а позволят установить, что га составное - так что вероятность однократного неудачного вы-борпа свидетеля не превышает 1/2, а при s-кратном повторении падает до 2~s.

Теорема 33.38

Пусть га - нечётное составное число. Тогда среди элементов Z+ не менее (га - 1)/2 являются свидетелями того, что га составное, то есть

\{а е Z+ : WiTNESs(a, га) = true) (га - 1)/2. Доказательство

Пусть фиксировано начётное составное число га. Будем называть элементы а £ Z+, для которых WlTNESs(a, п) = false, плохими. Мы хотим показать, что число плохих элементов не превосходит (п-1)/2.

Заметим, что все негодные элементы лежат в Z*. В самом деле, для плохого а выполнено равенство an~l = 1 (mod га), и потому

•п - 1

а и само а взаимно просты с га.

Теперь мы покажем, что все плохие элементы содержатся в некоторой собственной подгруппе В группы Z*. По следствию 33.16 число элементов в В не больше половины общего числа эдементов в Z*, откуда и следует доказываемое утверждение. Остаётся найти


собственную подгруппу В, содержащую все плохие элементы. Случай 1: Существует х £ Z*, для которого

хп~1 ф 1 (mod га).(33.43)

Тогда положим В равным {Ь £ Z* : Ьп~1 = 1 (mod га)}. Множество В замкнуто относительно операции -п, поэтому по теореме 33.14 оно является подгруппой группы Z*. Очевидно, все плохие элементы лежат вВипо предположению группа В является собственной подругоой - так что в этом случае всё доказано. Случай 2: Для всякого х £ Z*

xn~l = 1 (mod га)(33.44)

(га является числом Кармайкла).

Этот случай несколько более сложен. Покажем прежде всего, что га не может быть степенью простого числа. Пусть это не так и га = ре для нечётного простого р и для целого е > 1. Тогда по теореме

33.32группа Z* является циклической, то есть содержит элемент д, для которого ordn(g) = Z* = (р(п) = (р - 1)ре~1. По теореме

33.33из сравнения (33.44) следует, что га - 1 = 0 (mod ср(п)), но это невозможно, так как правая часть делится на р (и даже на pe 1, а левая на единицу меньше числа га, делящегося на р.

Итак, га является составным числом, которое не есть степень никакого простого числа, и потому содержит несколько разных простых множителей. Поэтому мы можем разложить га в произведение двух взаимно простых чисел п\,п2 > 1 (например, включив в щ один простой множитель, а в п2 - все остальные).

Число га - 1 четно. Выделим из него наибольшую степень двойки 2f, то есть запишем его в виде га - 1 = 2*и, где и нечётно. Для каждого а £ Z+ рассмотрим последовательность

а= (аи,а2и,а22и,... ,а2").(33.45)

состоящую из вычетов по модулю га; каждый следующий её элемент получается из предыдущего возведением в квадрат, а последний элемент есть ап~1. Заметим, что двоичная запись числа га - 1 оканчивается на га нулей, и потому все элементы этой последовательности встретятся в качестве промежуточных результатов при вычислениях в процедуре Witness (которые заканчиваются t возведениями в квадрат).

Какой вид может иметь последовательность а при различных а? Для каждого j = 0,1,... ,t посмотрим, какие члены могут появляться на j-ом месте в последовательности а (для удобства начинаем нумерацию с нуля, считая аи нулевым членом последовательности а). Последним членом (j = t) может быть только единица (иначе мы имели бы уже рассмотренный случай 1). С другой стороны, в начале последовательности а (то есть для j = 0) может



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96] [стр.97] [стр.98] [стр.99] [стр.100] [стр.101] [стр.102] [стр.103] [стр.104] [стр.105] [стр.106] [стр.107] [стр.108] [стр.109] [стр.110] [стр.111] [стр.112] [стр.113] [стр.114] [стр.115] [стр.116] [стр.117] [стр.118] [стр.119] [стр.120] [стр.121] [стр.122] [стр.123] [стр.124] [стр.125] [стр.126] [стр.127] [стр.128] [стр.129] [стр.130] [стр.131] [стр.132] [стр.133] [стр.134] [стр.135] [стр.136] [стр.137] [стр.138] [стр.139] [стр.140] [стр.141] [стр.142] [стр.143] [стр.144] [стр.145] [стр.146] [стр.147] [стр.148] [стр.149] [стр.150] [стр.151] [стр.152] [стр.153] [стр.154] [стр.155] [стр.156] [стр.157] [стр.158] [стр.159] [стр.160] [стр.161] [стр.162] [стр.163] [стр.164] [стр.165] [стр.166] [стр.167] [стр.168] [стр.169] [стр.170] [стр.171] [стр.172] [стр.173] [стр.174] [стр.175] [стр.176] [стр.177] [стр.178] [стр.179] [стр.180] [стр.181] [стр.182] [стр.183] [стр.184] [стр.185] [стр.186] [стр.187] [стр.188] [стр.189] [стр.190] [стр.191] [стр.192] [стр.193] [стр.194] [стр.195] [стр.196] [стр.197] [стр.198] [стр.199] [стр.200] [стр.201] [стр.202] [стр.203] [стр.204] [стр.205] [стр.206] [стр.207] [стр.208] [стр.209] [стр.210] [стр.211] [стр.212] [стр.213] [стр.214] [стр.215] [стр.216] [стр.217] [стр.218] [стр.219] [стр.220] [стр.221] [стр.222] [стр.223] [стр.224] [стр.225] [стр.226] [стр.227] [стр.228] [стр.229] [стр.230] [стр.231] [стр.232] [стр.233] [стр.234] [стр.235] [стр.236] [стр.237] [стр.238] [стр.239] [стр.240] [стр.241] [стр.242] [стр.243] [стр.244] [стр.245] [стр.246] [стр.247] [стр.248] [стр.249] [стр.250] [стр.251] [стр.252] [стр.253] [стр.254] [стр.255] [стр.256] [стр.257] [стр.258] [стр.259] [стр.260] [стр.261] [стр.262] [стр.263] [стр.264] [стр.265] [стр.266] [стр.267] [стр.268] [стр.269] [стр.270] [стр.271] [стр.272] [стр.273] [стр.274] [стр.275] [стр.276] [стр.277] [стр.278] [стр.279] [стр.280] [стр.281] [стр.282] [стр.283] [стр.284] [стр.285] [стр.286] [стр.287] [стр.288] [стр.289] [стр.290] [стр.291] [стр.292] [стр.293] [стр.294]