Характеристика метода Уильямса
Рассмотрение последовательности чисел Люка. Характеристика использования явных формул и теоремы Виетта. Разложение числа на множители. Анализ оценки сложности алгоритма Уильямса. Главная особенность применения простого делителя факторизуемого числа 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