Числа Мерсенна и Ферма — различия между версиями
Isaeva (обсуждение | вклад) |
Isaeva (обсуждение | вклад) |
||
Строка 88: | Строка 88: | ||
где <math>N = 2^{e_j}</math> и <math>0 \le a_j < 2^{e_j}</math> при <math>0 \le k \le t </math>. | где <math>N = 2^{e_j}</math> и <math>0 \le a_j < 2^{e_j}</math> при <math>0 \le k \le t </math>. | ||
+ | |||
+ | Тогда <math>A \equiv {(a_t + a_{t-1} + \ldots + a_1 + a_0)} \pmod {2^{e_j}-1}</math>, поскольку <math>N \equiv 1 \pmod{2^{e_j}-1}</math>. | ||
+ | |||
+ | Поэтому <math>{\alpha}_j</math> вычисляются путём сложения <math>e_j</math>-битовых чисел <math>{a_t \oplus a_{t-1} \oplus \ldots \oplus a_1 \oplus a_0} \pmod{2^{e_j}-1}</math>. | ||
+ | |||
+ | 3. Обратное преобразование для чисел Мерсенна. Метод Гарнера. | ||
+ | |||
+ | Обратный переход от СОК к позиционной системе счисления несколько сложнее. Как мы видели при доказательстве китайской теоремы об остатках, при вычислении обратных мультипликативных элементов требуется уметь вычислять значение функции Эйлера, которое в общем случае требует факторизации, т.е. разложения чисел <math>p_j</math> на простые множители. Даже это обстоятельство показывает, что обратное преобразование чисел из СОК в позиционную систему счисления в соответствии сэтим алгоритмом требует большого числа вычислительных операций с высокой точностью, а именно этого хотелось бы избежать. | ||
+ | Метод перехода от <math>{\alpha}_1, {\alpha}_2, \cdots, {\alpha}_n</math> к <math>A</math>, пригодный для практического применения, основан на другом доказательстве китайской теоремы об остатках. Такое доказательство предложено в 1958 г. Х. Л. Гарнером. Оно основано на использовании <math>{C_n}_k</math> констант <math>c_{i,j} (1 \le i \le j \le k)</math>, где | ||
+ | :<math>c_{i,j} \equiv 1 \pmod{p_j}</math>. (3) |
Версия 14:03, 25 декабря 2014
При рассмотрении отдельных классов простых чисел значительный интерес представляет вопрос о простых числах специального вида, например, числа Мерсенна или числа Ферма.
Определение
Числа Мерсенна — числа вида , где — натуральное число. Названы в честь французского математика Марена Мерсенна.
Иногда числами Мерсенна называют только числа с нечетными или простыми индексами n.
Множества простых чисел в этих последовательностях совпадают, а потому понятие простого числа Мерсенна не зависит от того, как именно определяются числа Мерсенна.
При простых значениях n = p число может оказаться простым, но может быть составным. Например, при мы получаем простые числа Мерсенна: , а при числа - составные.
Свойства чисел Мерсенна
- Если является простым, то число n также простое. Обратное в общем случае неверно, наименьшим контрпримером является .
- Любой делитель числа для простого p имеет вид 2pk+1, где k — натуральное число (следствие малой теоремы Ферма).
Числа Мерсенна получили известность в связи с эффективным тестом простоты Люка — Лемера, благодаря которому простые числа Мерсенна давно удерживают лидерство как самые большие известные простые числа.
Определение
Числа Ферма — числа вида , где n — неотрицательное целое число.
При числа Ферма простые: .
Все числа Мерсенна и Ферма – взаимно простые.
Необходимо отметить, что значения чисел Мерсенна и Ферма быстро растут. Это не позволяет только такими числами в качестве модулей СОК.
Операции над числами Мерсенна и Ферма
1. Если в качестве модулей выбраны числа Мерсенна, т.е. числа вида , для которых значение модуля на единицу меньше очередной степени двойки, это зачастую упрощает выполнение основных арифметических операций, так как выполнять вычисления с числами в таком представлении несколько проще, чем с числами, представленными в обратном коде.
При таком выборе модулей полезно несколько ослабить условие и потребовать только чтобы
- . (1)
Таким образом, значение принимается в качестве оптимального вместо , поскольку это, с одной стороны, не влияет на справедливость китайской теоремы об остатках, а с другой означает, что math>{\alpha}_j</math> может быть любым math>{\alpha}_j</math>- битовым двоичным числом. При таком допущении, операции сложения и вычитания по модулю выполняются следующим образом:
- ,
- .
Здесь и указывают на действия, которые с учётом условия (1) должны быть выполнены с отдельными компонентами кортежей и при сложении или умножении соответственно. При вычитании можно пользоваться и соотношением:
- .
Эти операции могут быть эффективно выполнены, даже если больше машинного слова компьютера, так как совсем просто вычислить остаток положительного числа по модулю степени 2 или разложить число по степеням 2. Для работы с модулями вида необходимо знать, при каких условиях число является взаимно простым с числом . Для этого существует простое правило:
- . (2)
Формула (2) утверждает, в частности, что
- .
Уравнение (2) следует из алгоритма Евклида и тождества
- .
Поэтому на компьютере с длиной слова можно выбрать
,
что обеспечивает эффективность сложения, вычитания и умножения целых чисел в интервале вплоть до .
2. Прямое преобразование для чисел Мерсенна
Модулярное представление для заданного числа может быть получено посредством деления на с запоминанием остатков. В случае, когда , возможно применение более подходящего способа, который состоит в том, чтобы, используя СОК, вычислить полином
- .
Если основание и модули имеют вид , оба подхода сводятся к совсем простому способу.
Рассмотрим двоичные представления числа с блоками по бит:
- ,
где и при .
Тогда , поскольку .
Поэтому вычисляются путём сложения -битовых чисел .
3. Обратное преобразование для чисел Мерсенна. Метод Гарнера.
Обратный переход от СОК к позиционной системе счисления несколько сложнее. Как мы видели при доказательстве китайской теоремы об остатках, при вычислении обратных мультипликативных элементов требуется уметь вычислять значение функции Эйлера, которое в общем случае требует факторизации, т.е. разложения чисел на простые множители. Даже это обстоятельство показывает, что обратное преобразование чисел из СОК в позиционную систему счисления в соответствии сэтим алгоритмом требует большого числа вычислительных операций с высокой точностью, а именно этого хотелось бы избежать. Метод перехода от к , пригодный для практического применения, основан на другом доказательстве китайской теоремы об остатках. Такое доказательство предложено в 1958 г. Х. Л. Гарнером. Оно основано на использовании констант , где
- . (3)