
- •Алгоритм Евклида. Получение рае. Решето Эратосфена.
- •Вычисление нод и нок на основе канонического разложения числа.
- •Тестирование чисел Мерена
- •4. Функция Эйлера
- •Теоремы ферма и Эйлера, их разложение к задаче вычисления степени числа по модулю.
- •Сравнение, свойства сравнений.
- •9. Квадратичные вычеты
- •Полугруппы, моноид, группы, кольцо
- •Поле, конечное поле, расширение конечного поля.
- •Способы нахождения обратных элементов
- •III. Использование расширенного алгоритма Евклида.
- •Первообразные корни
- •15. Сравнение с одним неизвестным
- •16. Китайская теорема об остатках
- •17. Числа Кармайкла
Теоремы ферма и Эйлера, их разложение к задаче вычисления степени числа по модулю.
Функция Эйлера может быть использована для возведение больших чисел в большую степень по модулю. Имеется целое число А возводим его в целое число Х и требуется взять модуль – тоже некоторое целое число M и получить остаток от этого числа r.(ax)mod m = r.
Если p — простое число и a не делится на p, то a p — 1 ≡ 1 (mod p) – малая теорема Ферма(Частный случай теоремы Эйлера).
Пример.
Пусть дано:
a=2,
х=5432675,
m=p=13 Теорема Эйлера (a(m))mod m 1.
m – целое, а – взаимное простое с m.
Теорема Эйлера утверждает, что остаток будет равен 1
Если
m простое, то
(р)=p-1
ap-1 = 1modp
1) Находим функцию Эйлера для числа m=p=13, т.е. исходя из малой т.Ферма (р)=p-1=12.
2) Число х представляем черех функцию Эйлера
х=5432675=q (р)+r = 452722*12+11=4352722+11
Вычисляем
(24352722*12+11)mod13=(24352722*12*211)mod13=[(24352722*12mod13)(211mod13)]mod13=
=(24352722*12+11)mod13=7
Здесь сомножитель (2435272*12)mod13 по теореме Эйлера равен 1.
Сравнение, свойства сравнений.
Под операцией a mod m понимается операция взятия целочисленного остатка от деления числа a на число m, где a и m - целые числа.
Запись в модульной арифметике a ≡ b mod m или a = b + k·m, где a, b, m - целые числа, m ≠ 0, k - некоторое целое число. Отсюда следует, что m делит (a - b) нацело: m/(a-b) или (a-b)modm=0. Число b называют вычетом числа a по модулю m. Операция a mod m назыв-ся приведением числа a по модулю m
Ряд
целых чисел от 0 до (m
-
1) называется полным
набором вычетов по
модулю m.
Для любого целого a
(a>0)
его вычет r
по
модулю m
принадлежит
интервалу r
=
.
Число r
можно
найти перебором из системы:
{r=a-km, kz, r = 0,m 1.}, перебирая все значения k.
Свойства операций сравнения состоят из 3 групп:
I)Свойства, определяемые отношением эквивалентности
1) Рефлективность a ≡ a mod m
2) Симметричность a ≡ b mod m, b mod a ≡ m
a(m) mod m≡1 или a(m)≡1mod m
3) Транзитивность. Если a ≡ b mod m и b mod c ≡ m, то a ≡ с mod m
II) Свойства сравнимости по модулю 2 аналогичны свойствам равенства
1)Если a1 ≡ b1 modm и a2 ≡ b2 modm, то(a1+a2)mod m=(b1+b2)mod m
2)Если a1 ≡ b1 modm и a2 ≡ b2 modm, то(a1*a2)mod m=(b1*b2) modm
3) Если a ≡ b mod m, (k,m)=1, тогда ak=bmmod m
4) Если a ≡ b mod m, тогда ak ≡bk mod m, где k- натуральное.
III) Свойства, отличающихся от свойств равенства
5) Имеем a, b – числа, m – модуль (a,b) ≡ d – НОД, (d,m)≡1, a ≡ b mod m, тогда a/d ≡ b/d mod m
6) b*a ≡ b mod m, d –такое что a/d, b/d, m/d, тогда a/d≡b/d mod (m/d)
7) (a+b) mod m ≡ [a mod m + b mod m] mod m
8) a*b mod m ≡ [(a mod m)*(b mod m)] mod m
Теорема Эйлера.
a(m)≡1 mod m
Классы вычетов. Полная и приведенная система вычетов
a ≡ b mod m
a ≡ c mod m
a ≡ d mod m
Сравнимость по mod n является отношением эквивалентности на множестве Z целых чисел. Классами вычетов по mod n, являются следующие множества - разбиения Z :
[О] = {..., -2n, -n, О, n, 2n, ...},
[1]= {..., -2n+l, -n+l, 1, n+l, 2n+l, ...},
...
[n-l]={..., -n-l, -1, n-l, 2n-l, 3n-l, ...}.
Пример. Определим классы вычетов по mod 7:
[0]= {..., -14, -7, 0, 7, 14, 21, ...},
[1]= {..., -13, -6, 1, 8, 15, 22, ...},
[2]= {..., -12, -5, 2, 9, 16, 23, ...},
[3]= {..., -11, -4, 3,10,17, 24, ...},
[4] ={..., -10, -3, 4, 11, 18, 25, ...},
[5] ={..., -9, -2, 5, 12, 19, 26, ...},
[6] ={..., -8, -1, 6, 13, 20, 27, ...}.
Число классов вычетов совпадает со значением модуля.
Число чисел в классе бесконечно.
В каждом классе свои числа – они больше нигде не встречаются – пересечений нет.
Полная система вычетов – когда из любого класса берется по одному представителю. Приведенная система вычетов – система, состоящая из взаимно простых вычетов.
Схема Горнера.
На вход: числа a, x, m.
На выходе: y или сообщение о неприменимости алгоритма.
1. Ввод a, x, m.
2. Если m = 0, то деление на ноль, выход.
3. Если a = 0, то результат равен y = 0, переход к пункту 9.
4. Если a = 1 или x = 0, то результат равен y = 1, переход к пункту 9.
5. Производим поиск для числа x верхней границы, являющейся степенью числа 2: число k такое, что x ≤ 2k.
а) Пусть r = 20 и k = 0; пока k < 32 (максимальное число разрядов в машинном слове) и r ≤ x, то возводим 2 в степень k: r = 2k и увеличиваем k на единицу.
б) Если k = 0 или k > 32, то задача не решается в установленных условиях, выход
6. Пусть r = a. Если степень x нечетна (остаток от деления на 2 равен единице), то y = a, иначе y = 1.
7.
Для всех i=
выполняем следующие действия:
а) r = [(r mod m)·(r mod m)] mod m = r2 mod m;
б) если i-ый бит числа x равен единице xi =1, то y=(y*r)mod m.
8. Вывод результата y. Выход.
Вычислительная сложность схемы Горнера равна O(log32(x)).
Второй вариант схемы Горнера.
Первые 6 шагов совпадают с алгоритмом первого варианта схемы Горнера.
7. Пусть результат y=1, переменная циклa i=k−1 и r=a2 mod m.
8. Если xi = 1, то y=(y2 ·r)modm,
иначе y = y2 mod m.
9. Вычислить i = i − 1. Если i > 1, то перейти к шагу 8.
10. Если x0 = 1, то y = (y · a) mod m.
11. Вывод результата y. Выход.