Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В теории вычислений числа , то тест Лукаса является тестом на простоту для натурального числа п ; он требует, чтобы простые множители из п - 1, уже известны. [1] [2] Это основа сертификата Pratt, которая дает краткую проверку того, что n является простым числом.

Концепции [ править ]

Пусть n - натуральное число. Если существует целое число a , 1 <  a  <  n , такое, что

и для каждого простого множителя q числа n  - 1

тогда n простое. Если такого числа a не существует, то n равно 1, 2 или составному .

Причина в правильности этого утверждения заключается в следующем: если первая эквивалентность имеет место для , мы можем сделать вывод , что и п являются взаимно простыми . Если также выживает второй шаг, затем порядок из в группе ( Z / п Z ) * равно п -1, что означает , что порядок этой группы является п -1 (потому что порядок каждого элемента группу делит порядок группы), подразумевая , что п является простым . Наоборот, если 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 . Теперь вычисляем:

Для всех целых чисел a известно, что

Следовательно, порядок умножения 17 (mod 71) не обязательно равен 70, потому что некоторый коэффициент 70 также может работать выше. Итак, проверьте 70, разделив его на основные множители:

К сожалению, получаем 17 10 ≡1 (mod 71). Так что мы до сих пор не знаем, является ли 71 простое число или нет.

Мы пробуем другое случайное значение a , на этот раз выбирая a  = 11. Теперь мы вычисляем:

Опять же, это не показывает, что порядок умножения 11 (mod 71) равен 70, потому что некоторый коэффициент 70 также может работать. Итак, проверьте 70, разделив его на основные множители:

Таким образом, порядок умножения 11 (mod 71) равен 70, и, следовательно, 71 простое число.

(Для выполнения этих модульных возведений в степень можно было бы использовать алгоритм быстрого возведения в степень, такой как двоичное возведение в степень или возведение в степень с добавлением цепочки ).

Алгоритм [ править ]

Алгоритм можно записать в псевдокоде следующим образом:

Алгоритм lucas_primality_test является  вход : п > 2, нечетное целое число , чтобы быть проверены на простоту. k , параметр, определяющий точность теста. вывод : простое, если n простое, иначе составное или, возможно, составное . определить простые множители n −1. LOOP1: повторить  k раз: выбрать случайным образом в диапазоне [2, п - 1] , если затем вернуть композиционный еще # Loop2: для всех простых множителей д о п -1: если тогда , если мы проверили это равенство для всех простых делителей п -1 , то вернуть премьер еще продолжить LOOP2 else # продолжить LOOP1                  возврат  возможно составной .

См. Также [ править ]

Заметки [ править ]

  1. ^ Crandall, Ричард; Померанс, Карл (2005). Простые числа: вычислительная перспектива (2-е издание) . Springer. п. 173. ISBN. 0-387-25282-7.
  2. ^ Křížek, Михал; Лука, Флориан; Сомер, Лоуренс (2001). 17 лекций о числах Ферма: от теории чисел к геометрии . CMS Книги по математике. 9 . Канадское математическое общество / Springer. п. 41. ISBN 0-387-95332-9.