2, так как число qn1 + 1 = рх — простое. Отсюда р > (2q + I)2, что противоречит условию. Значит, / = 0 и р… Читать ещё >
Для генерации близкого к п простого числа:
Для генерации простых чисел можно применить детерминированные тесты простоты, например тест, основанный на следующем утверждении.
Теорема 16.3. Пусть q — нечетное простое, т — четное, тогда нечетное число р = qm + 1 — простое, если р < (2q + I)2 и выполнены следующие условия: Ът = 1 (modp), 2т Ф 1 (modр).
М Пусть каноническое разложение числа р в произведение степеней.
v k к 1
простых нечетных делителей рх, …, ps имеет вид р = рх…р/У и а есть порядок числа 2 по modр. Тогда d| (р — 1) по первому условию, d не делит (р — 1) / q по второму условию и d | (р (р) по теореме Эйлера. В силу простоты q d, и значит, q | ср (р), где ф (р) = -pkfp — 1)…(р4 — 1);
Если q е {рх, …, pj, то р = qn при некотором натуральном п в соответствии с каноническим разложением числа р. Тогда по условию qn = qm + 1, отсюда q 1, т. е. имеем противоречие. Следовательно, q? [рх, …, ps}, значит, q делит один из множителей (рх — 1), …, (ps — 1). Пусть для определенности q (j) — 1), тогда рх = qn + 1 при некотором четном п. Отсюда qm+ 1 = р=рр'= (qn + 1) г при некотором нечетном г. Следовательно, г- 1 = = q (m — nr), и наконец, р = (qn -г 1 )(ql + 1) при некоторых четных п и / = = т — пг, где п > 2 и / > 0.
Если р составное, то / > 2, так как число qn1 + 1 = рх — простое. Отсюда р > (2q + I)2, что противоречит условию. Значит, / = 0 и р простое. ?
Алгоритм генерации простых чисел построен по итеративному принципу и позволяет получать простые числа с длиной двоичной записи не менее 17 битов.
Пусть требуется построить ?-битовое простое число. Тогда построим убывающую последовательность чисел ?0, tx,…, ts_u ts, где t0 = t, ti+x = L/ 2_|, i = 0, 1, …, 5−1, ts_x > 17 > ts. Алгоритм выполняет 5+1 шаг. На 0-м шаге методом пробных делений строится простое число р0 с длиной двоичной записи ts. На г-м шаге с использованием теоремы 16.2 строится простое число Pi с длиной двоичной записи ts_t, i = 1,…, 5.
Опишем i-й шаг, 1 < i < s. Пусть имеется простое число pi_x с длиной двоичной записи ts_hX, тогда строим число q с длиной двоичной записи ts ; вида q = Pi_xm + 1, где т — четное число, полученное с помощью датчика случайных чисел. Далее в соответствии с теоремой проверяем простоту числа q, а именно два условия: 2<�Н = 1 (modg) и 2т * 1 (mod^).
Если выполнены оба условия, то рх — q — простое число. Если хотя бы одно из условий не выполнено, то число q считаем составным, строим число q' = Pi_x(m + 2) + 1, проверяем простоту q' и т. д. до получения простого числа Pj в ряду q, q',…