Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 [ 10 ] 11 12 13 14 15 16

Теорема. Пусть и = 2FR + 1 жтое и F = qk1 .. .qk% F > R (2R, F) = 1 q , . . . , q ятность того, что случайно выбранное основание a £ Zn в лемме 1 будет доказывать простоту числа щвна (F)/F.

и an- =

= 1 (mod тся при всех a £ При (2R,F) = 1 условие a(n-1)/qj = 1 (mod и) всех j равносильно тому, что порядок элемента ется на лемму 3 при d = F получаем □

q1 , . . .

...,q личину

Так как F = qkk1 ... , то искомая оценка вытекает из неравенства

F = q s = 1 □

у. Маурер предложил следующий рекурсивный алгоритм построения больших простых чисел (впервые идея метода изложена им в 1991 г.). В нем на каждом шаге алгоритма берутся уже построенные на предыдущем этапе простые числа qi,qs и для случайного набора показателей ki,..., жтся число F = qkk1 ... qkks. Затем случайно подбираются числа x У R=R(x, y) < тобы (2F, R) = 1 и число и = 2FR + жотором a удовлетворяло условию лемм 1 или 2. По времени данный алгоритм оказывается очень эффек-и

ее следствия число жтро. Если же число и со-

an- = 1 (mod и)

нескольких баз сти только и не является числом Кармайкла, т.е. является числом очень специального вида. При этом, полученные в результате работы алгоритма простые числа будут иметь практически равномерное распределение. У. Маурер был фактически первым, кто предложил и обосновал использование случайного поиска вместе с достаточными условиями простоты, что позволило строить доказуемо простые числа.

12.5. Метод Михалеску

В 1994 г. П. Михалеску предложил еще более быстрый алгоритм генерации доказуемо простых чисел. По мнению Михалеску в методе Маурера потеря в эффективности происходит из-за усложненного механизма для построения простых чисел с «почти» равномерным распределением. Он предложил алгоритм поиска чисел в арифметиче-

и - 1

сивную процедуру. Кроме того, он оптимизировал процедуру отбраковки составных чисел, используя решето Эратофена и тест простоты Рабина-Миллера.

рядных чисел состоит в следующем. Пусть B > 0 - целое число и s,c> 0 - действительные константы. m < B m

пробных делений).

ла 2m < F < 2cm, факторизация которого полностью известна, где положить 1/2 1/3 в зависимости от применяемого достаточного условия простоты, см. леммы 1 или 2 в методе Маурера.

Шаг 3. Выбираем случайное число t £ (2m-2/F, 2m-1/F - sm).

Шаг 4. Ищем простое число в арифметической прогрессии

P = {и = no + ia: no = ta +1, a = 2F, 0 < i < s}.

Тест простоты, применяемый на шаге 4, выполняется в три этапа.

Этап 1. Пробные деления на простые числа, не превосходящие Л, где Л -заданная верхняя граница.

Этап 2. Проверка простоты с помощью теста Рабина-Миллера.

Этап 3. Доказательство простоты с помощью лемм 1 или 2 (см. метод Маурера).

B s c

мизировать данный алгоритм. При этом потери, связанные с усложнением процедуры доказательства простоты для случая, когда проверяемое число является простым (выполняется редко в алгоритме), во многом компенсируются ускоренной отбраковкой составных чисел (выполняется часто в алгоритме).



12.6. (n + 1)-методы

Рассмотренные выше методы относятся к так называемым (n- 1)

(n - 1)

(n + 1)

(n + 1)

p q p2 - 4q

ным вычетом по модулю п. Тогда квадратное уравнение -рх + д = 0 имеет различные корни, один из которых равен г = (р + /р" - 4q)/2. Индукцией легко показать, что степени этого числа имеют специальный вид.

Лемма 1. Степени числаг имеют видr = {Vk+Ukp - 4q)/2, где последовательности {Uk } {V;;} определяются рекуррентными соотношениями

Uo =0, U1 = 1, Uk+2 = pUk+1 - qUk,

Vo =2, V1 = p, Vk+2 = pVk+1 - qVk, k 0

Данные последовательности называются последовательностями

позволяющих вычислять их аналогично методу повторного возведения в квадрат при возведении в степень, например,

U2k = Uk Vk, V2k = V2 - 2qk, k 0

(При p = 1 q = - мтельность {Uk} совпадает с последовательностью Фибоначчи.) Следующая лемма играет роль, аналогичную малой теореме Ферма.

Лемма 2. Пусть числа р, q и г определены выше и 2г = а + + Ьл/р2 - 4q (mod п) для некоторых чисел а и Ь одинаковой четности. Если п простое, то 2г" = а - Ьл/р2 - 4q (mod п). □

{ Uk }

Лемма 3. Еслг1 тое, то Un+1 = О (mod □ n>1

делителя r сла n +1 жие простые числа p и q, что

p2 - 4q n

Un+1 = О (mod n), U(n+1)/r = О (mod n), то ncmoe. □

Данная теорема играет роль, в точности аналогичную роли теоре-(n - 1)

{ Vk } ( n - 1)

n2 + 1 n2 ± n- 1

12.Т. Числа Мерсенна

Наиболее известным частным случаем этого подхода является следующий критерий простоты для чисел Мерсенна. Числами Мерсенна называются числа вида Mn = 2n - вде n - простое. Легко видеть, что число тетым только если n - простое.

тельность {Lm} определена рекуррентным образом

Lo =4, Lm+1 = Lm - 2, О < m<n

Число только то гда, когда Ln-2 = О (mod □ Критерий был первоначально открыт Люка в конце 1890-х гг., а данную краткую форму приобрел около 1930 г. в работах Лемера.

(n + 1) q = 2 k = 2m

Lm = V2k/2k

В таблице 1 приведен список всех известных в настоящее время p Mp

очередь число Pp = Mp(Mp - 1) является совершенным). Вопросительные знаки в таблице означают, что пока проверены не все числа, и поэтому неизвестно, являются ли они подряд идущими простыми числами Мерсенна.

Последние пять простых чисел были найдены в рамках программы широкомасштабного поиска, организованного с 1995 г. в сети Интернет - GIMPS (the Great Internet Mersenne Prime Search) Г. "Уолма-hom, написавшим быструю программу для персонального компьютера и разместившим ее на своем web-сервере. Он организовал также распределенную базу данных, в которой отражался ход поиска. В 1997 г. компание Entropia, Inc., основанной С.Куровски, была организована система поддержки распределенных вычислений PrimeNet, которая в настоящее время координирует работу нескольких сотен тысяч компьютеров. (В последнем столбце таблицы 1 в скобках указано число компьютеров, принимавших участие в поиске.)

§ 13. Алгоритмы факторизации целых чисел

разложения его в произведение простых сомножителей. Тривиальный алгоритм, часто называемый алгоритмом «пробных делений».



Таблица 1. Известные числа Мерсенна

цифр

в Мр

цифр в Рр

автор

компьютер

1456

неизв.

1588

Cataldi

1588

- » -

1772

Эйлер

1883

Первушин

1911

Powers

1914

- » -

1876

Lucas

1952

Robinson

SWAC

1952

Lehmer & Robinson

SWAC

1279

1952

- » -

SWAC

2203

1327

1952

- » -

SWAC

2281

1373

1952

- » -

SWAC

3217

1937

1957

Riesel

BESK

4253

1281

2561

1961

Hurwitz & Selfridge

IBM 7090

4423

1332

2663

1961

- » -

IBM 7090

9689

2917

5834

1963

Gillies

ILIAC 2

9941

2993

5985

1963

- » -

ILIAC 2

11213

3376

6751

1963

- » -

ILIAC 2

19937

6002

12003

1971

Tuckerman

IBM 360

21701

6533

13066

1978

Noll & Nickel

CDC 174

23209

6987

13973

1979

Noll

CDC 174

44497

13395

26790

1979

Nelson & Slowinski

CRAY

86243

25962

51924

1982

Slowinski

CRAY

110503

33265

66530

1988

Colquitt & Welsh

132049

39751

79502

1983

Slowinski

CRAY

216091

65050

130100

1985

- » -

CRAY

756839

227832

455663

1992

Slowinski & Gage

CRAY

859433

258716

517430

1994

CRAY

1257787

378632

757263

1996

- » -

CRAYT94

1398269

420921

841842

1996

Armengaud, Woltman, et. al. (GIMPS)

Pentium 90

2976221

895932

1791864

1997

Spence, Woltman, et. al. (GIMPS)

Pentium 100 (2 000)

3021377

909526

1819050

1998

Clarkson, Woltman, Kurowski et. al. (GIMPS, PrimeNet)

Pentium 200 (4 ООО)

6972593

2098960

4197919

1999

Hairatwala, Woltman, Kurowski et. al. (GIMPS, PrimeNet)

Pentium 1Г350 (21500)

13466917

4053946

8107892

2001

Cameron, Woltman, Kurowski et. al. (GIMPS, PrimeNet)

AMD 800 (205 000)

простые числа, не превосходящие -\/п. При выполнении данного алгоритма возникает две трудности. С одной стороны, для больших чисел и

оказаться настолько большим, что его просто невозможно выполнить. С другой стороны, необходимо заранее строить список всех простых чисел, не превосходящих -\/п, что уже само по себе является трудной задачей. Второй трудности можно легко избежать, если осуществлять деления числа на все целые числа k, не превосхо-

дящие -\/п. Это избавит от необходимости строить исходный список простых чисел, причем сложность такого алгоритма увеличится не более, чем в 0(log и) раз.

для данного алгоритма оценивается величиной

0(7г(у) log2 п) =0(vlogn)

для деления на простые числа, и

©(vlogn)

для деления на подряд идущие целые числа.

Заметим, что при анализе алгоритмов факторизации часто ограничиваются рассмотрением только первого шага-нахождения первого нетривиального делителя. Легко видеть, что для нахождения полной и

log2 и

Хотя применение алгоритма «пробных делений» в полном объеме и

рокое применение в своем «сокращенном» варианте, когда пробные деления осуществляются только на все простые числа, не превосходящие некоторой константы С

Граница С

Число простых 7г(С)

1000

10 000

1229

100 000

9592

1000 000

78498

10 000 000

664 579

100 000 000

5 761455



0 1 2 3 4 5 6 7 8 9 [ 10 ] 11 12 13 14 15 16