Характеристика метода Уильямса

Рассмотрение последовательности чисел Люка. Характеристика использования явных формул и теоремы Виетта. Разложение числа на множители. Анализ оценки сложности алгоритма Уильямса. Главная особенность применения простого делителя факторизуемого числа N.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 13.01.2020
Размер файла 350,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

(P + 1) -- метод Уильямса -- метод факторизации чисел n ? N с помощью последовательностей чисел Люка, разработанный в 1982 году. Алгоритм находит простой делитель p числа n. Аналогичен (P ? 1) -- методу Полларда, но использует разложение на множители числа p + 1. Имеет хорошие показатели производительности только в случае, когда p + 1 легко факторизуется. Как правило, на практике реализуется не часто из-за невысокого процента подобных случаев.

1. Описание алгоритма

Рассматривается последовательность чисел Люка:

u0 = 0, u1 = u, un+1 = Цun - Иun-1,

где Ц и И -- фиксированные целые числа.

p -- простой делитель числа n, причем p + 1 является B-степенно гладким, то есть

где qi -- простые числа, ? B.

Пусть ? последовательность чисел , такая, что каждый ее член удовлетворяет условиям

i = 1,...,k.

Пусть , тогда p + 1 | R. Далее, если для последовательности чисел Люка И взаимно прост с n и выполняется условие

,

то по свойствам последовательности чисел Люка

p | НОД

Далее алгоритм вычисляет элемент последовательности ur и находит НОД.

Для дальнейших выкладок нам понадобится ввести последовательности чисел Люка и перечислить некоторые их свойства.

Пусть {\displaystyle P}P и {\displaystyle Q}Q - некоторые фиксированные целые числа. Последовательности чисел Люка определяются как[1]:

{\displaystyle U_{0}(P,Q)=0,\quad U_{1}(P,Q)=1,\quad U_{n+2}(P,Q)=P\cdot U_{n+1}(P,Q)-Q\cdot U_{n}(P,Q),n\geq 0}

{\displaystyle V_{0}(P,Q)=2,\quad V_{1}(P,Q)=P,\quad V_{n+2}(P,Q)=P\cdot V_{n+1}(P,Q)-Q\cdot V_{n}(P,Q),n\geq 0}

Пусть также {\displaystyle \Delta =P^{2}-4Q.}

Последовательности имеют следующие свойства:

{\displaystyle \left\{{\begin{matrix}U_{n}(V_{k}(P,Q),Q^{k})=U_{nk}(P,Q)/U_{k}(P,Q),\\V_{n}(V_{k}(P,Q),Q^{k})=V_{nk}(P,Q)\end{matrix}}\right.\quad (5)}

Для доказательства данных свойств рассмотрим явные формулы последовательности чисел Люка:

{\displaystyle U_{n}(P,Q)={\frac {\alpha ^{n}-\beta ^{n}}{\alpha -\beta }}}

где б{\displaystyle \alpha } и в{\displaystyle \beta } - корни характеристического многочлена

{\displaystyle x^{2}-P\cdot x+Q}

Используя явные формулы и теорему Виетта:

{\displaystyle P=\alpha +\beta ;\quad Q=\alpha \cdot \beta ,}

получаем выражения (1), (2), (3), (4) и (5). {\displaystyle (1),(2),(3),(4)} {\displaystyle (5).}

Далее выделяем ещё одно свойство:

И, наконец, формулируем теорему:

Если p -- нечётное простое число {\displaystyle p\mid Q}

{\displaystyle \left\{{\begin{matrix}U_{(p-\epsilon )m}(P,Q)\equiv 0\mod p,\\V_{(p-\epsilon )m}(P,Q)\equiv 2Q^{m(1-\epsilon )/2}\mod p\end{matrix}}\right.\quad (T1)}

Доказательство данной теоремы трудоёмкое, и его можно найти в книге Д. Г. Лемера[2].

2. Оценка сложности

2.1 Первый шаг алгоритма

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

где -- простые числа.

Пусть

Введём число где степени выбираются таким образом, что

Тогда [1]

Далее, согласно теореме если НОД то

И, следовательно, НОД то есть найден делитель искомого числа [1].

Стоит обратить внимание, что числа не известны на начальном этапе задачи. Поэтому для упрощения задачи сделаем следующее: так как то по свойству (2) Далее воспользуемся свойством (6) и получим: число теорема множитель делитель

Таким образом, мы без потери общности можем утверждать, что [1]

Далее пользуемся теоремой из которой делаем вывод, что

И, следовательно, [1]

Теперь выбираем некоторое число такое, что НОД

Обозначаем:

Окончательно, нужно найти НОД[1]

Для поиска поступаем следующим образом[1]:

1) раскладываем в двоичный вид: где .

2) вводим последовательность натуральных чисел . При этом ;

3) ищем пары значений по следующему правилу:

при этом

4) значения ищутся по правилам (которые следуют из свойств и определения последовательности чисел Люка):

.

Для значений, введённых по умолчанию, то есть получаем результат:

374468

Делаем проверку этого значения. Для этого считаем НОД НОД и .

Если мы в первом шаге неудачно выбрали числа , то есть получилось так, что НОД, то тогда нужно переходить ко второму шагу. Иначе -- работа завершена[1].

2.2 Второй шаг алгоритма

Пусть число имеет некоторый простой делитель, больший чем , но меньший некоторого , то есть:

,

где

Вводим последовательность простых чисел .

Вводим ещё одну последовательность:

Далее определяем:

.

Используя свойство , получаем первые элементы:

.

Далее используем свойство и получаем:

.

Таким образом, мы вычисляем

Далее считаем:

НОД для

Как только получаем , то прекращаем вычисления[1].

Для значений, введённых по умолчанию, то есть получаем результат:

139,

что является верным ответом.

Таким образом, Автором данного метода были проведены тесты и методов на машине AMDAHL 470-V7 на 497 различных числах, которые показали, что в среднем первый шаг алгоритма работает примерно в 2 раза медленнее первого шага алгоритма , а второй шаг -- примерно в 4 раза медленнее[1]. В связи с тем, что - метод факторизации работает быстрее, - метод применяется на практике очень редко[1].

1. Примеры

С N = 112729 и A = 5, последовательные значения{\ displaystyle V_ {M}}Размещено на http://www.allbest.ru/

являются:

V 1 из seq (5) = V 1! из seq (5) = 5

V 2 из seq (5) = V 2! из seq (5) = 23

V 3 из seq (23) = V 3! из seq (5) = 12098

V 4 из seq (12098) = V 4! из seq (5) = 87680

V 5 seq (87680) = V 5! из seq (5) = 53242

V 6 seq (53242) = V 6! из seq (5) = 27666

V 7 из seq (27666) = V 7! seq (5) = 110229.

В этот момент gcd (110229-2,112729) = 139, поэтому 139 является нетривиальным множителем 112729. Обратите внимание, что p + 1 = 140 = 2 2 Ч 5 Ч 7. Число 7! это самый низкий факториал, кратный 140, поэтому на этом шаге будет найден подходящий фактор 139.

Используя другое начальное значение, скажем, A = 9, мы получаем:

V 1 из seq (9) = V 1! из seq (9) = 9

V 2 из seq (9) = V 2! из seq (9) = 79

V 3 из seq (79) = V 3! из seq (9) = 41886

V 4 из seq (41886) = V 4! из seq (9) = 79378

V 5 seq (79378) = V 5! из seq (9) = 1934

V 6 seq (1934) = V 6! из seq (9) = 10582

V 7 из seq (10582) = V 7! из seq (9) = 84241

V 8 из seq (84241) = V 8! из seq (9) = 93973

V 9 seq (93973) = V 9! из seq (9) = 91645.

В этот момент gcd (91645-2,112729) = 811, поэтому 811 является нетривиальным множителем 112729. Обратите внимание, что p-1 = 810 = 2 Ч 5 Ч 3 4 . № 9! это самый низкий факториал, кратный 810, поэтому на этом шаге будет найден подходящий фактор 811. Фактор 139 не найден на этот раз, потому что p-1 = 138 = 2 Ч 3 Ч 23, который не является делителем 9!

Как видно из этих примеров, мы заранее не знаем, будет ли найденное простое число гладким p + 1 или p-1.

2.3 Факторизовать число 23927

Разложение числа 23927 на множители. Находим наименьшее целое число s такое, что s2?v23927, то есть s=v23927=155. Далее задавая k=0,1,... вычисляем l=(s+k)2?n. Если на каком то шаге l является квадратом натурального числа, то процедуру останавливаем.

k

x=s+k

l=x2?n

y=

vl

a=x+y

b=x?y

0

155

98

9.899

164.899

145.101

1

156

409

20.223

176.223

135.777

2

157

722

26.870

183.870

130.130

3

158

1037

32.202

190.202

125.798

4

159

1354

36.796

195.796

122.204

5

160

1673

40.902

200.902

119.098

6

161

1994

44.654

205.654

116.346

7

162

2317

48.135

210.135

113.865

8

163

2642

51.400

214.400

111.600

9

164

2969

54.488

218.488

109.512

10

165

3298

57.428

222.428

107.572

11

166

3629

60.241

226.241

105.759

12

167

3962

62.944

229.944

104.056

13

168

4297

65.551

233.551

102.449

14

169

4634

68.073

237.073

100.927

15

170

4973

70.519

240.519

99.481

16

171

5314

72.897

243.897

98.103

17

172

5657

75.213

247.213

96.787

18

173

6002

77.472

250.472

95.528

19

174

6349

79.680

253.680

94.320

20

175

6698

81.841

256.841

93.159

21

176

7049

83.958

259.958

92.042

22

177

7402

86.034

263.034

90.966

23

178

7757

88.073

266.073

89.927

24

179

8114

90.077

269.077

88.923

25

180

8473

92.048

272.048

87.952

26

181

8834

93.989

274.989

87.011

27

182

9197

95.900

277.900

86.100

28

183

9562

97.785

280.785

85.215

29

184

9929

99.644

283.644

84.356

30

185

10298

101.479

286.479

83.521

31

186

10669

103.290

289.290

82.710

32

187

11042

105.080

292.080

81.920

33

188

11417

106.850

294.850

81.150

34

189

11794

108.600

297.600

80.400

35

190

12173

110.331

300.331

79.669

36

191

12554

112.044

303.044

78.956

37

192

12937

113.740

305.740

78.260

38

193

13322

115.420

308.420

77.580

39

194

13709

117.085

311.085

76.915

40

195

14098

118.734

313.734

76.266

41

196

14489

120.370

316.370

75.630

42

197

14882

121.991

318.991

75.009

43

198

15277

123.600

321.600

74.400

44

199

15674

125.195

324.195

73.805

45

200

16073

126.779

326.779

73.221

46

201

16474

128.351

329.351

72.649

47

202

16877

129.911

331.911

72.089

48

203

17282

131.461

334.461

71.539

49

204

17689

133.000

337.000

71.000

k

x=s+k

l=x2?n

y=

vl

a=x+y

b=x?y

Разложение числа 23927 на множители:

23927=337·71

Выполнено за 0.00078600 сек.

От x=155 до x=204 Шагов 50

Список литературы

1. Williams H. C. A p+1 method of factoring (англ.) = A p+1 method of factoring // American Mathematical Society. -- 1982. --,. --. -- ISSN 00255718.

2. D. H. Lehmer An extended theory of Lucas' functions (англ.) = An extended theory of Lucas' functions // Ann. of Math.. -- 1930. --,. --.

3. Bach E., Shallit J. Factoring with cyclotomic polynomials Math.Comp. 1989. V. 52 (185). P. 201--219.

4. Ишмухаметов Ш. Т. Методы факторизации натуральных чисел: Учебное пособие. -- Казань: Казанский Университет, 2011. -- С. 60-61. -- 190 с.

Размещено на Allbest.ru

...

Подобные документы

  • Составление алгоритма и программы для факторизации целого числа N с помощью ро-метода Полларда. Краткое описание данного метода: составление последовательности, вычисление разности и наибольшего общего делителя. Алгоритм работы и листинг программы.

    курсовая работа [12,1 K], добавлен 24.06.2010

  • Выбор структуры класса больших целых чисел, их сравнительная характеристика и описание преимуществ, недостатков. Реализация метода перемножения двух больших чисел, возведения числа в степень и взятия факториала числа. Режим вычисления выражений.

    курсовая работа [827,2 K], добавлен 19.04.2011

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

    курсовая работа [50,3 K], добавлен 18.09.2009

  • Запись прямого и обратного кода для числа 10010 и -10010. Получение дополнительного кода числа для 16-разрядной ячейки. Перевод в двоичную систему счисления десятичных чисел: 10, 45, 7, 33. Запись в обратном и дополнительном кодах числа -67, -43, -89.

    практическая работа [13,7 K], добавлен 19.04.2011

  • Формирование устойчивой последовательности псевдослучайных чисел с использованием метода "середины квадрата". Разработка программы для определения среднего значения чисел, среднего значения квадратов чисел и дисперсии для последовательности из 20 чисел.

    лабораторная работа [1,4 M], добавлен 21.01.2015

  • Принцип работы алгоритма бинарного поиска в массиве. Способы исследования алгоритма "прямое включение". Формулы зависимости числа сравнений от элементов в массиве. Графики среднего числа сравнений и перемещений практических и теоретических измерений.

    курсовая работа [646,1 K], добавлен 07.01.2014

  • Разложение функций по переменным. Совершенная дизъюнктивная нормальная форма. Разрешимoсть задач в классической теории алгоритмов и их трудоемкость. Память и время как количественная характеристика алгоритма (применительно к машине Тьюринга и ЭВМ).

    дипломная работа [59,9 K], добавлен 17.04.2009

  • Актуальность и предыстория проблемы построения систем связи с открытым ключом. Алгоритм кодирования, перевода из десятичного числа в двоичное, быстрого возведения числа в степень, поиска взаимно простых чисел. Дешифрование сообщения по криптоалгоритму.

    курсовая работа [140,3 K], добавлен 20.06.2017

  • Составление процедуры для матрицы, разложения матрицы на множители, решения системы линейных уравнений, нахождения определителя матрицы и матрицы с транспонированием. Суть метода квадратного корня. Разложение матрицы на множители. Листинг программы.

    лабораторная работа [39,4 K], добавлен 18.09.2012

  • Составление программы сортировки по возрастанию массив из 20 шестнадцатеричных чисел, просматривающей все исходные числа во внешней памяти и выбирающей самое большое число. Блок-схема алгоритма работы программы. Таблица команд и число их выполнения.

    курсовая работа [23,1 K], добавлен 24.05.2015

  • Определение понятия, видов и задач сортировки. Рассмотрение основ построения простых и улучшенных алгоритмов сортировки, анализ числа операций. Линейная и пирамидальная организация данных. Основные правила нижней оценки числа операций в алгоритмах.

    презентация [274,5 K], добавлен 19.10.2014

  • Общее понятие алгоритма и меры его сложности. Временная и емкостная сложность алгоритмов. Основные методы и приемы анализа сложности. Оптимизация, связанная с выбором метода построения алгоритма и с выбором методов представления данных в программе.

    реферат [90,6 K], добавлен 27.11.2012

  • Характеристика методов представления заданных чисел в двоичной, шестнадцатеричной, восьмеричной системе счисления. Представление указанного числа в четырехбайтовом IEEE формате. Разработка алгоритма обработки одномерных и двумерных числовых массивов.

    контрольная работа [138,9 K], добавлен 05.06.2010

  • Описание логической структуры программы "perevod" для перевода числа из одной системы счисления в другую. Блок-схема алгоритма обработчика события Button1Click. Разработка и испытание приложений. Назначение и условия применения программы, листинг.

    курсовая работа [945,5 K], добавлен 03.01.2011

  • Преобразование чисел из естественной формы в нормализованную. Алгоритм нормализации числа. Способы кодирования чисел и действия над ними. Особенности прямого, дополнительного, смещенного и обратного кода. Понятие вещественных чисел, их представление.

    презентация [42,6 K], добавлен 14.06.2011

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

    курсовая работа [205,0 K], добавлен 24.06.2013

  • Проектирование датчика случайных чисел, пригодного для моделирования случайной последовательности с заданным законом распределения. Методы моделирования. Разработка алгоритма и программы датчика. Исследование свойств выработанной им последовательности.

    лабораторная работа [124,2 K], добавлен 15.06.2010

  • Понятие алгоритма и анализ теоретических оценок временной сложности алгоритмов умножения матриц. Сравнительный анализ оценки временной сложности некоторых классов алгоритмов обычным программированием и программированием с помощью технологии Open MP.

    дипломная работа [1,6 M], добавлен 12.08.2017

  • Система счисления и перевод числа из одной системы в другую. Машинное предоставление информации. Числа с фиксированной точкой: прямой, обратный (инверсный) или дополнительный код. Программная реализация алгоритма и описание использованных процедур.

    курсовая работа [96,7 K], добавлен 20.11.2010

  • Факторизация натурального числа. Метод квадратичного решета. Факторизация с помощью эллиптических кривых. Реализация алгоритмов натуральных чисел и оценка их эффективности. Применение алгоритмов факторизации натуральных чисел в программной среде Maple.

    курсовая работа [851,6 K], добавлен 25.06.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.