Тест Лукаса на простоту
В вычислительной теории чисел тест Люка — это тест на простоту натурального числа n ; для этого требуется, чтобы простые множители числа n - 1 были уже известны. [1] [2] Это основа сертификата Пратта , который дает краткую проверку того, что n является простым.
Концепции [ править ]
Пусть n — положительное целое число. Если существует целое число a , 1 < a < n , такое, что
и для каждого простого множителя q числа n − 1
тогда n простое. Если такого числа a не существует, то n равно 1, 2 или составному числу .
Причина правильности этого утверждения следующая: если первая эквивалентность справедлива для a , мы можем сделать вывод, что a и n взаимно просты . Если a также выдерживает второй шаг, то порядок a группе в −1, что означает , ( Z / n Z )* равен n что порядок этой группы равен n −1 (поскольку порядок каждого элемента из группа делит порядок группы), подразумевая, что n число простое . И наоборот, если n простое, то существует примитивный корень по модулю n или генератор группы ( Z / n Z )*. Такой генератор имеет порядок |( Z / n Z )*| = n −1, и обе эквивалентности будут выполняться для любого такого примитивного корня.
Обратите внимание: если существует a < n такое , что первая эквивалентность не выполняется, a называется свидетелем Ферма составности n .
Пример [ править ]
Например, возьмем n = 71. Тогда n − 1 = 70 и простые делители числа 70 равны 2, 5 и 7. Мы случайным образом выбираем a=17 < n . Теперь вычисляем:
Для всех целых чисел известно, что
Следовательно, мультипликативный порядок 17 (по модулю 71) не обязательно равен 70, поскольку некоторый коэффициент 70 также может работать и выше. Итак, проверьте 70, разделенное на его простые множители:
К сожалению, мы получаем это 17 10 ≡1 (мод. 71). Итак, мы до сих пор не знаем, является ли 71 простым или нет.
Мы попробуем еще одно случайное значение a , на этот раз выбрав a = 11. Теперь вычисляем:
Опять же, это не означает, что мультипликативный порядок 11 (по модулю 71) равен 70, поскольку некоторый коэффициент 70 также может работать. Итак, проверьте 70, разделенное на его простые множители:
Таким образом, мультипликативный порядок числа 11 (по модулю 71) равен 70, и, следовательно, 71 является простым числом.
(Чтобы выполнить это модульное возведение в степень , можно использовать быстрый алгоритм возведения в степень, такой как двоичное возведение в степень или возведение в степень сложения ).
Алгоритм [ править ]
Алгоритм можно записать в псевдокоде следующим образом:
algorithm lucas_primality_test is input: n > 2, an odd integer to be tested for primality. k, a parameter that determines the accuracy of the test. output: prime if n is prime, otherwise composite or possibly composite. determine the prime factors of n−1. LOOP1: repeat k times: pick a randomly in the range [2, n − 1] if then return composite else # LOOP2: for all prime factors q of n−1: if then if we checked this equality for all prime factors of n−1 then return prime else continue LOOP2 else # continue LOOP1 return possibly composite.
См. также [ править ]
- Эдуард Лукас , в честь которого назван этот тест
- Маленькая теорема Ферма
- Тест на простоту Поклингтона , улучшенная версия этого теста, которая требует только частичной факторизации n - 1.
- Сертификат первичности
Примечания [ править ]
- ^ Крэндалл, Ричард; Померанс, Карл (2005). Простые числа: вычислительная перспектива (2-е изд.). Спрингер. п. 173. ИСБН 0-387-25282-7 .
- ^ Кржижек, Михал; Лука, Флориан; Сомер, Лоуренс (2001). 17 лекций о числах Ферма: от теории чисел к геометрии . Книги CMS по математике. Том. 9. Канадское математическое общество/Спрингер. п. 41. ИСБН 0-387-95332-9 .