2014 dxdy logo

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

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


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


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

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

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

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

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



Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Возведение в большие степени и mod n. Поясните.
Сообщение18.09.2009, 15:27 


18/09/09
47
SPb
Задача - довести до такого состояния чтобы в excel'е можно было посчитать не схватитв переполнения.

Первую конструкцию довёл до конца.

$
a^{13}\ mod\ n = (a\cdot a^{12})\ mod\ n = (a\cdot a^8 \cdot a^4)\ mod\ n = (a\cdot  ((a^2)^2)^2 \cdot (a^2)^2) )\ mod\ n =(((a\cdot a^2)^2)^2 \cdot a)\ mod\ n = \left[(((a^2 mod\ n)\cdot a)^2\ mod\ n)^2 \cdot a\right]\ mod\ n
$

А вот эту до конца довести не могу.

$
a^{61}\ mod\ n = (a\cdot a^{60})\ mod\ n = (a\cdot a^{32} \cdot a^{16} \cdot a^3 \cdot a^2)\ mod\ n = \left[a\cdot ((((a^2)^2)^2)^2)^2 \cdot (((a^2)^2)^2)^2 \cdot ((a^2)^2)^2 \cdot (a^2)^2) \right]\ mod\ n = \left[a\cdot ((((a\cdot a^2)^2)^2)^2)^2 \cdot ((a\cdot a^2)^2)^2\right]\ mod\ n = 
$

Подскажите как дальше?

 Профиль  
                  
 
 Re: Возведение в большие степени и mod n. Поясните.
Сообщение18.09.2009, 16:56 
Заслуженный участник


04/05/09
4582
Опустим $\mod\ n$, подразумевая, что все произведения и квадраты выполняются по модулю.
$a^{61}= a\cdot a^{60} = a\cdot ((a^{15})^2)^2 = a\cdot ((a\cdot a^{14})^2)^2 = a\cdot ((a\cdot (a^7)^2)^2)^2 = a\cdot ((a\cdot (a\cdot a^6)^2)^2)^2 = a\cdot ((a\cdot (a\cdot (a^3)^2)^2)^2)^2 = a\cdot ((a\cdot (a\cdot (a\cdot a^2)^2)^2)^2)^2$

 Профиль  
                  
 
 Re: Возведение в большие степени и mod n. Поясните.
Сообщение18.09.2009, 17:49 


18/09/09
47
SPb
Этот момент ясен.
А как с $mod\ n$ поступать?

Вот это верно или нет?

$
((((((((a^2\ mod\ n)\cdot a)^2\ mod\ n)\cdot a)^2\ mod\ n)\cdot a)^2\ mod\ n)^2 \cdot a)\ mod\ n
$

 Профиль  
                  
 
 Re: Возведение в большие степени и mod n. Поясните.
Сообщение18.09.2009, 18:22 
Аватара пользователя


31/07/07
161
Если мне память не изменяет, если $n$ - составное, можно его разложить, а после воспользоваться КТО.

 Профиль  
                  
 
 Re: Возведение в большие степени и mod n. Поясните.
Сообщение18.09.2009, 19:03 
Заслуженный участник


04/05/09
4582
smartchecker в сообщении #244425 писал(а):
Этот момент ясен.
А как с $mod\ n$ поступать?
Надо брать модуль после каждого умножения, включая возведение в квадрат.

 Профиль  
                  
 
 Re: Возведение в большие степени и mod n. Поясните.
Сообщение18.09.2009, 19:36 
Заморожен
Аватара пользователя


18/12/07
8774
Новосибирск
venco в сообщении #244457 писал(а):
Надо брать модуль после каждого умножения, включая возведение в квадрат.


Другими словами, производить все действия в $\mathbb{Z}_n$ :)

Это, кстати, вроде бы известная задача: какое минимальное (зависящее от $n$) количество умножений нужно выполнить для возведения числа в $n$-ую степень. Название задачи не помню.

 Профиль  
                  
 
 Re: Возведение в большие степени и mod n. Поясните.
Сообщение18.09.2009, 19:39 


18/09/09
47
SPb
Trotil в сообщении #244439 писал(а):
Если мне память не изменяет, если $n$ - составное, можно его разложить, а после воспользоваться КТО.

Предположим так
$444^{61}\mod\ 469$

 Профиль  
                  
 
 Re: Возведение в большие степени и mod n. Поясните.
Сообщение18.09.2009, 19:52 
Заслуженный участник


04/05/09
4582
smartchecker в сообщении #244469 писал(а):
Trotil в сообщении #244439 писал(а):
Если мне память не изменяет, если $n$ - составное, можно его разложить, а после воспользоваться КТО.

Предположим так
$444^{61}\mod\ 469$
Забудьте пока КТО. Это слишком сложно для вас.

 Профиль  
                  
 
 Re: Возведение в большие степени и mod n. Поясните.
Сообщение18.09.2009, 20:20 
Заморожен
Аватара пользователя


18/12/07
8774
Новосибирск
smartchecker в сообщении #244469 писал(а):
Предположим так
$444^{61}\mod\ 469$


В $\mathbb{Z}_{469}$ справедливо $444 = -25 = -5^2$. То есть надо искать $5^{122}$ :)

 Профиль  
                  
 
 Re: Возведение в большие степени и mod n. Поясните.
Сообщение18.09.2009, 20:34 
Заслуженный участник


27/06/08
4058
Волгоград
Проще всего возводить в большую степень по модулю бинарным алгоритмом.
Вот код на maple:
Код:
bin_deg := proc(x, d, m)
local i, c, s, dd, xx;
    s := 1;
    dd := d;
    xx := x;
    for i while 0 < dd do
        dd := iquo(dd, 2, 'c');
        if c = 1 then s := s*xx mod m end if;
        xx := xx*xx mod m
    end do;
    s
end proc
Для возведения в степень порядка 1 000 000 000 000 000 000 по модулю 20-значного числа требуется порядка трех сотых секунды.

Но бинарный алгоритм использует не наименьшее число умножений.
Для нахождения наименьшего числа умножений требуется строить степенное дерево. О нем можно почитать у Кнута во втором томе "Искусства программирования".

Только пока это дерево построишь...
Так что, для больших показателей вполне достаточно бинарного алгоритма.

 Профиль  
                  
 
 Re: Возведение в большие степени и mod n. Поясните.
Сообщение18.09.2009, 23:07 


18/09/09
47
SPb
venco в сообщении #244479 писал(а):
smartchecker в сообщении #244469 писал(а):
Trotil в сообщении #244439 писал(а):
Если мне память не изменяет, если $n$ - составное, можно его разложить, а после воспользоваться КТО.

Предположим так
$444^{61}\mod\ 469$
Забудьте пока КТО. Это слишком сложно для вас.

Тогда какие варианты для меня?
Ещё раз обозначу - считается всё в MS Excel.

 Профиль  
                  
 
 Re: Возведение в большие степени и mod n. Поясните.
Сообщение18.09.2009, 23:29 
Заслуженный участник


31/12/05
1480
smartchecker в сообщении #244582 писал(а):
Ещё раз обозначу - считается всё в MS Excel.
Может, сделать пользовательскую функцию на VBA?

 Профиль  
                  
 
 Re: Возведение в большие степени и mod n. Поясните.
Сообщение19.09.2009, 06:28 
Заморожен
Аватара пользователя


18/12/07
8774
Новосибирск
smartchecker в сообщении #244582 писал(а):
Тогда какие варианты для меня?


Вам уже указали наилучший вариант --- бинарный алгоритм возведения в степень. Все действия выполняйте внутри $\mathbb{Z}_n$ (то есть считайте, что результат умножения двух меньших $n$ чисел --- это остаток от их "настоящего" произведения при делении на $n$).

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

 Профиль  
                  
 
 Re: Возведение в большие степени и mod n. Поясните.
Сообщение19.09.2009, 09:22 


23/01/07
3419
Новосибирск
Для удобства можно представить число в двоичной системе.
$ 61_{10}= 111101_2$
Записываем полученное число сверху-вниз, начиная с конца.
1 $a^1$
0 $a^2=a^1a^1$
1 $a^4=a^2a^2$
1 $a^8=a^4a^4$
1 $a^{16}=a^8a^8$
1 $a^{32}=a^{16}a^{16}$
Перемножаете или сами значения, или остатки тех строк, против которых стоит 1.

 Профиль  
                  
 
 Re: Возведение в большие степени и mod n. Поясните.
Сообщение19.09.2009, 10:36 
Заслуженный участник


27/06/08
4058
Волгоград
Батороев в сообщении #244645 писал(а):
Для удобства можно представить число в двоичной системе.
$ 61_{10}= 111101_2$
Записываем полученное число сверху-вниз, начиная с конца.
1 $a^1$
0 $a^2=a^1a^1$
1 $a^4=a^2a^2$
1 $a^8=a^4a^4$
1 $a^{16}=a^8a^8$
1 $a^{32}=a^{16}a^{16}$
Перемножаете или сами значения, или остатки тех строк, против которых стоит 1.
Это верно.
Более того, тремя постами выше данный алгоритм уже приведен :)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

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



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

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


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

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