Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodicheskie_ukazania_k_laboratornym_rabotam_O...doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
359.42 Кб
Скачать

4. Реализовать на листе Excel вычисления с большими числами по модулю.

Описание алгоритма быстрого возведения в степень по модулю y=a^x mod N.

Требуется вычислить результат возведения в степень по модулю. Вычисление должно выполняться в целых числах. Вычисление по модулю можно выполнять последовательно, т.е. a^b mod N можно вычислять по шагам следующим образом: 1. a^2=a*a mod N 2. a^3=a^2*a mod N 3. a^4=a^3*a mod N …

b-1. a^b=a^(b-1)*a mod N

Т.Е. После каждого шага приводить по модулю. Аналогично можно применять этот подход к быстрому возведению в степень:

Алгоритм: y=a^x mod N

Начальные присвоения: Y=1 A=a X=x

В цикле выполняем:

if(X – нечетно) then

a)Y=Y*A mod N;

b)X=(X-1)/2;

с)A=A*A mod N.

if(X – четно) then

a)Y=Y; (т.е. оставляем как на предыдущем шаге)

b)X=X/2

с)A=A*A mod N.

Алгоритм завершается при X=0 (на этом шаге A не нужно считать) Ответ: y=Y;

5. Реализовать на листе Excel алгоритм Ферма разложения на множители. n=p*q. Найти p и q по известному n.

Описание алгоритма. В рамках алгоритма мы пытаемся представить n как x2-y2, тогда n раскладывается на (x-y)*(x+y). Алгоритм достаточно эффективен при близких сомножителях p и q. Шаг1. Принять x=[sqrt(n)], если n=x2 , то x делитель – окончание алгоритма, иначе x=x+1 ([ … ]- обозначает взять целое). Шаг2. Если x=(n+1)/2 – n простое – окончание алгоритма, иначе вычисляем y=sqrt(x2-n). Шаг3. Если y целое, т.е. y2=x2-n,то решение найдено (n=(x+y)*(x-y)), иначе x=x+1 и переходим к шагу 2.

Пример n=1342127

x

x2

x2-n

y=sqrt(x2-n)

1158

1340964

-1163

1159

1343281

1154

33,97058

1160

1345600

3473

58,93216

1161

1347921

5794

76,11833

1162

1350244

8117

90,09439

1163

1352569

10442

102,1861

1164

1354896

12769

113

Т.е. x=1164, y=113. n=(1164+113)*(1164-113)=1277*1051

Варианты задания:

№ пп

Двоичная запись

Быстрое возведение

НОД

Быстрое возведение по модулю

Факторизация

1

16

9^10

1125851

1129913

11^14 mod 111

5810653073 319066187

2

19

9^11

1307491

1316503

12^12 mod 112

5824662901 208613461

3

25

8^12

1678583

1689179

13^11 mod 113

5842265399 339726871

4

16

7^13

1927231

1933033

14^10 mod 114

5858168527 224263319

5

17

6^14

270253

272611

15^14 mod 115

5872408933 363499961

6

26

6^13

385711

387521

11^15 mod 116

5887482301 236246759

7

18

5^14

530819

535121

12^12 mod 117

5905333157 383745989

8

28

4^12

671849

676537

13^11 mod 118

5920578299 252427511

9

27

2^36

851189

854779

14^12 mod 119

5942282681 481531609

10

29

3^23

1025977

1030187

15^12 mod 120

5959258237 420194951

Контрольные вопросы

1. Приведите примеры «сложных» операций.

2. Приведите примеры «простых» операций.

3. Поясните, что лежит в основе алгоритма быстрого возведения в степень.

4. Назовите задачи, которые можно решить на основе алгоритма Эвклида.

5. Перечислите свойства вычислений по модулю.

6. Произведите следующие вычисления:

7 mod 3 11+9 mod 8

6 mod 3 3-7 mod 8

3 mod 6 3*7 mod 8

-2mod 6 6+2 mod 8

7 mod 7 3+2 mod 8

7. Предложите несколько способов факторизации.

8. Укажите, какое максимальное число необходимо испытывать, если находить множитель некоторого большого числа методом последовательного перебора чисел: 1, 2, 3, 4, 5, 6, …

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]