Символ Якоби ( к/н ) для различных k (вверху) и n (вдоль левой стороны). Показаны только 0 ≤ k < n , поскольку из-за правила (2) ниже любое другое k может быть сокращено по модулю n . Квадратичные вычеты выделены желтым цветом — обратите внимание, что ни одна запись с символом Якоби −1 не является квадратичным вычетом, а если k является квадратичным вычетом по модулю взаимно простого числа n , то ( к/н ) = 1 , но не все записи с символом Якоби 1 (см. строки n = 9 и n = 15 ) являются квадратичными остатками. Обратите также внимание, что когда n или k являются квадратами, все значения неотрицательны.
Для любого целого числа a и любого положительного нечетного целого числа n символ Якоби ( а/н ) определяется как произведение символов Лежандра, соответствующих простым множителям n :
где
является разложением на простые множители числа n .
Символ Лежандра ( а/п ) определяется для всех целых чисел a и всех нечетных простых чисел p формулой
Когда нижний аргумент является нечетным простым числом, символ Якоби равен символу Лежандра.
Таблица значений
Ниже приведена таблица значений символа Якоби ( к/н ) при n ≤ 59, k ≤ 30, n нечетное.
Характеристики
Следующие факты, даже законы взаимности, являются прямыми выводами из определения символа Якоби и соответствующих свойств символа Лежандра. [2]
Символ Якоби определен только тогда, когда верхний аргумент («числитель») является целым числом, а нижний аргумент («знаменатель») — положительным нечетным целым числом.
1. Если n — (нечетное) простое число, то символ Якоби ( а/н ) равен (и записывается так же) соответствующему символу Лежандра.
Закон квадратичной взаимности : если m и n — нечетные положительные взаимно простые целые числа, то
6.
и его добавки
7. ,
и
8.
Объединение свойств 4 и 8 дает:
9.
Как символ Лежандра:
Если ( а/н ) = −1, то a является квадратичным невычетом по модулю n .
Если a — квадратичный вычет по модулю n и gcd ( a , n ) = 1, то ( а/н ) = 1.
Но, в отличие от символа Лежандра:
Если ( а/н ) = 1, то a может быть, а может и не быть квадратичным вычетом по модулю n .
Это потому, что для того, чтобы a был квадратичным вычетом по модулю n , он должен быть квадратичным вычетом по модулю каждого простого множителя n . Однако символ Якоби равен единице, если, например, a является невычетом по модулю ровно двух простых множителей n .
Хотя символ Якоби нельзя единообразно интерпретировать в терминах квадратов и неквадратов, его можно единообразно интерпретировать как знак перестановки по лемме Золотарева .
Приведенные выше формулы приводят к эффективному алгоритму O (log a log b ) [3] для вычисления символа Якоби, аналогичному алгоритму Евклида для нахождения наибольшего общего делителя двух чисел. (Это не должно удивлять в свете правила 2.)
Уменьшите «числитель» по модулю «знаменателя», используя правило 2.
Извлеките любой четный «числитель», используя правило 9.
Если «числитель» равен 1, правила 3 и 4 дают результат 1. Если «числитель» и «знаменатель» не являются взаимно простыми, правило 3 дает результат 0.
В противном случае «числитель» и «знаменатель» теперь являются нечетными положительными взаимно простыми целыми числами, поэтому мы можем перевернуть символ, используя правило 6, а затем вернуться к шагу 1.
В дополнение к приведенному ниже коду, Riesel [4] имеет его на языке Pascal.
Реализация вЛуа
функция jacobi ( n , k ) assert ( k > 0 и k % 2 == 1 ) n = n % k t = 1 while n ~= 0 do while n % 2 == 0 do n = n / 2 r = k % 8 if r == 3 or r == 5 then t = - t end end n , k = k , n if n % 4 == 3 and k % 4 == 3 then t = - t end n = n % k end if k == 1 then return t else return 0 end end
Реализация вС++
// a/n представлено как (a,n) int jacobi ( int a , int n ) { assert ( n > 0 && n % 2 == 1 ); // шаг 1 a = ( a % n + n ) % n ; // Обработка (a < 0) int t = 1 ; int r ; // шаг 3 while ( a != 0 ) { // шаг 2 while ( a % 2 == 0 ) { a /= 2 ; r = n % 8 ; if ( r == 3 || r == 5 ) { t = - t ; } } // шаг 4 r = n ; n = a ; a = r ; if ( a % 4 == 3 && n % 4 == 3 ) { t = - t ; } a = a % n ; } if ( n == 1 ) { return t ; } иначе { вернуть 0 ; } }
Пример расчета
Символ Лежандра ( а/п ) определен только для нечетных простых чисел p . Он подчиняется тем же правилам, что и символ Якоби (т. е. взаимности и дополнительным формулам для ( −1/п ) и ( 2/п ) и мультипликативность «числителя».)
Разница между двумя вычислениями заключается в том, что при использовании символа Лежандра «числитель» должен быть разложен на простые множители, прежде чем символ будет перевернут. Это делает вычисления с использованием символа Лежандра значительно медленнее, чем с использованием символа Якоби, поскольку не существует известного алгоритма полиномиального времени для факторизации целых чисел. [5] Фактически, именно поэтому Якоби ввел этот символ.
Тестирование простоты
Есть еще один способ, которым символы Якоби и Лежандра различаются. Если формула критерия Эйлера используется по модулю составного числа, результат может быть или не быть значением символа Якоби, и на самом деле может даже не быть −1 или 1. Например,
Таким образом, если неизвестно, является ли число n простым или составным, мы можем выбрать случайное число a , вычислить символ Якоби ( а/н ) и сравните ее с формулой Эйлера; если они различаются по модулю n , то n является составным; если они имеют одинаковый остаток по модулю n для многих различных значений a , то n является « вероятно простым ».
В качестве косвенного использования его можно использовать в качестве процедуры обнаружения ошибок во время выполнения теста простоты Люка-Лемера , который даже на современном компьютерном оборудовании может занять недели при обработке чисел Мерсенна более (наибольшее известное простое число Мерсенна по состоянию на октябрь 2024 года). В номинальных случаях символ Якоби:
Это также справедливо для конечного остатка и, следовательно, может использоваться в качестве проверки вероятной валидности. Однако, если в оборудовании возникает ошибка, существует 50% вероятность того, что результат станет 0 или 1 вместо этого и не изменится с последующими членами (если только не произойдет другая ошибка и не изменит его обратно на -1).
^ Якоби, CGJ (1837). «Über die Kreisteilung und ihre Anwendung auf die Zahlentheorie». Берихт Ак. Висс. Берлин : 127–136.
↑ Айрленд и Розен, стр. 56–57 или Леммермейер, стр. 10
↑ Коэн, стр. 29–31.
^ стр. 285
^ Решето числового поля , самый быстрый из известных алгоритмов, требует
операции по факторизации n . См. Коэн, стр. 495
Ссылки
Коэн, Анри (1993). Курс вычислительной алгебраической теории чисел . Берлин: Springer . ISBN 3-540-55640-0.
Айрленд, Кеннет; Розен, Майкл (1990). Классическое введение в современную теорию чисел (второе изд.). Нью-Йорк: Springer . ISBN 0-387-97329-X.
Леммермейер, Франц (2000). Законы взаимности: от Эйлера до Эйзенштейна . Берлин: Шпрингер . ISBN 3-540-66957-4.
Ризель, Ганс (1994), Простые числа и компьютерные методы факторизации (второе издание) , Бостон: Birkhäuser, ISBN 0-8176-3743-5
Шаллит, Джеффри (декабрь 1990 г.). «О худшем случае трех алгоритмов вычисления символа Якоби». Журнал символических вычислений . 10 (6): 593–61. doi : 10.1016/S0747-7171(08)80160-5 . Технический отчет по информатике PCS-TR89-140.
Валле, Брижит ; Леме, Чарли (октябрь 1998 г.). Анализ среднего случая трех алгоритмов вычисления символа Якоби (технический отчет). CiteSeerX 10.1.1.32.3425 .
Эйкенберри, Шона Мейер; Соренсон, Джонатан П. (октябрь 1998 г.). "Эффективные алгоритмы вычисления символа Якоби" (PDF) . Журнал символических вычислений . 26 (4): 509–523. CiteSeerX 10.1.1.44.2423 . doi :10.1006/jsco.1998.0226.
Внешние ссылки
Рассчитайте символ Якоби. Архивировано 05.10.2016 на Wayback Machine. Показаны этапы расчета.