2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

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

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

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 Факторизация Бриллхарта-Моррисона (вопрос по цепным дробям)
Сообщение11.05.2010, 19:18 


25/04/09
6
Прошу помочь людей, имевших дело с этим методом. Сразу оговорюсь, что он у меня работает, числа раскладывает, но я не понимаю, адекватно ли происходящее в процессе.

В алгоритме Бриллхарта-Моррисона получение пар A, Q для которых выполняется $Q = A^2 mod N$ происходит через разложение в цепную дробь числа $\sqrt N$. Мало знакомый с цепными дробями, я долго искал подробный алгоритм генерации. В результате наткнулся на оригинальную работу Померанса - Implementation of the continued fraction integer factoring algorithm, где на 4ой странице есть подробное описание следующего вида:
$Q_n = Q_{n-2} + q_{n-1}*(r_{n-1} - r_{n-2})$
$G_n = 2*g - r_{n-1}$
$q_n = [G_n/Q_n]$
$r_n = G(n) - q(n)*Q(n)$
$A_n = (q_n*A_{n-1} + A_{n-2}) mod N$

$g = \sqrt N$
$Q_{-1} = N$
$Q_0 = 1$
$q_0 = g$
$r_{-1} = g$
$r_0 = 0$
$A_{-1} = 1$
$A_0 = g$

В общем я реализовал эту последовательность, но почему-то пары генерируются через шаг.
Тоесть не для каждого шага получается пара, а для каждых двух соседних шагов.
Чтобы объяснить понятнее, даю отрывок из файла с парами:
N = 3217104339627144632956527751747 (102 bits)
An^2 mod N = 1522905984030422 # Qn = 2064351653568051
An^2 mod N = 3217104339627143550065188676488 # Qn = 1522905984030422
An^2 mod N = 2200073224775814 # Qn = 1082891339075259
An^2 mod N = 3217104339627143922939355674480 # Qn = 2200073224775814
An^2 mod N = 1131588038634766 # Qn = 710017172077267
An^2 mod N = 3217104339627142234911540524884 # Qn = 1131588038634766
В результате я, конечно, просто отбираю пары по диагонали и всё работает. Но я не могу понять: так должно быть или я накосячил в реализации последовательности? Если второе, то после исправления количество шагов станет вдвое меньше.

 Профиль  
                  
 
 Re: Факторизация Бриллхарта-Моррисона (вопрос по цепным дробям)
Сообщение12.05.2010, 07:28 
Модератор
Аватара пользователя


11/01/06
5702
lonelyass в сообщении #318095 писал(а):
N = 3217104339627144632956527751747 (102 bits)
An^2 mod N = 1522905984030422 # Qn = 2064351653568051
An^2 mod N = 3217104339627143550065188676488 # Qn = 1522905984030422
An^2 mod N = 2200073224775814 # Qn = 1082891339075259

Тут просто-напросто знак скачет - заметьте, что
$$3217104339627143550065188676488 \equiv -1082891339075259\pmod{N}$$

-- Tue May 11, 2010 23:32:04 --

Кстати, описание метода факторизации с помощью цепных дробей на русском есть в
http://www.mathnet.ru/rus/intf147 стр. 79-80 и около

 Профиль  
                  
 
 Re: Факторизация Бриллхарта-Моррисона (вопрос по цепным дробям)
Сообщение14.05.2010, 19:52 


25/04/09
6
Огромное спасибо, сам не заметил :-)
В принципе, тему можно закрывать.

 Профиль  
                  
 
 Re: Факторизация Бриллхарта-Моррисона (вопрос по цепным дробям)
Сообщение25.05.2015, 16:47 


25/05/15
1
скиньте реализацию алгоритма на с++ пожалуйста

 Профиль  
                  
 
 Re: Факторизация Бриллхарта-Моррисона (вопрос по цепным дробям)
Сообщение25.05.2015, 18:15 
Супермодератор
Аватара пользователя


20/11/12
5728
 !  moska625, замечание за капслок.
Капслок убран.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group