stringtranslate.com

символ Якоби

Карл Густав Якоб Якоби, который ввел этот символ.

Символ Якоби ( к/н) ​​для различных k (вверху) и n (вдоль левой стороны). Показаны только 0 ≤ k < n , поскольку из-за правила (2) ниже любое другое k может быть сокращено по модулю n . Квадратичные вычеты выделены желтым цветом — обратите внимание, что ни одна запись с символом Якоби −1 не является квадратичным вычетом, а если k является квадратичным вычетом по модулю взаимно простого числа n , то ( к/н) ​​= 1 , но не все записи с символом Якоби 1 (см. строки n = 9 и n = 15 ) являются квадратичными остатками. Обратите также внимание, что когда n или k являются квадратами, все значения неотрицательны.

Символ Якоби является обобщением символа Лежандра . Введенный Якоби в 1837 году, [1] он представляет теоретический интерес для модульной арифметики и других разделов теории чисел , но его основное применение — в вычислительной теории чисел , особенно в проверке простоты и факторизации целых чисел ; они, в свою очередь, важны в криптографии .

Определение

Для любого целого числа a и любого положительного нечетного целого числа n символ Якоби ( а/н) ​​определяется как произведение символов Лежандра, соответствующих простым множителям n :

где

является разложением на простые множители числа n .

Символ Лежандра ( а/п) ​​определяется для всех целых чисел a и всех нечетных простых чисел p формулой

Следуя обычному соглашению для пустого продукта, ( а/1) ​​= 1.

Когда нижний аргумент является нечетным простым числом, символ Якоби равен символу Лежандра.

Таблица значений

Ниже приведена таблица значений символа Якоби ( к/н) ​​при n  ≤ 59, k  ≤ 30, n нечетное.

Характеристики

Следующие факты, даже законы взаимности, являются прямыми выводами из определения символа Якоби и соответствующих свойств символа Лежандра. [2]

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

1. Если n — (нечетное) простое число, то символ Якоби ( а/н) ​​равен (и записывается так же) соответствующему символу Лежандра.
2. Если ab  (mod n ) , то
3.

Если фиксирован верхний или нижний аргумент, то символ Якоби является полностью мультипликативной функцией по оставшемуся аргументу:

4.
5.

Закон квадратичной взаимности : если m и n — нечетные положительные взаимно простые целые числа, то

6.

и его добавки

7. ,

и

8.

Объединение свойств 4 и 8 дает:

9.

Как символ Лежандра:

Но, в отличие от символа Лежандра:

Если ( а/н)  ​​= 1, то a может быть, а может и не быть квадратичным вычетом по модулю n .

Это потому, что для того, чтобы a был квадратичным вычетом по модулю n , он должен быть квадратичным вычетом по модулю каждого простого множителя n . Однако символ Якоби равен единице, если, например, a является невычетом по модулю ровно двух простых множителей n .

Хотя символ Якоби нельзя единообразно интерпретировать в терминах квадратов и неквадратов, его можно единообразно интерпретировать как знак перестановки по лемме Золотарева .

Символ Якоби ( а/н) ​​является характером Дирихле по модулю n .

Вычисление символа Якоби

Приведенные выше формулы приводят к эффективному алгоритму O (log a log b ) [3] для вычисления символа Якоби, аналогичному алгоритму Евклида для нахождения наибольшего общего делителя двух чисел. (Это не должно удивлять в свете правила 2.)

  1. Уменьшите «числитель» по модулю «знаменателя», используя правило 2.
  2. Извлеките любой четный «числитель», используя правило 9.
  3. Если «числитель» равен 1, правила 3 ​​и 4 дают результат 1. Если «числитель» и «знаменатель» не являются взаимно простыми, правило 3 дает результат 0.
  4. В противном случае «числитель» и «знаменатель» теперь являются нечетными положительными взаимно простыми целыми числами, поэтому мы можем перевернуть символ, используя правило 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/п) ​​и мультипликативность «числителя».)

Задача: учитывая, что 9907 — простое число, вычислить ( 1001/9907) ​​.

Использование символа Лежандра

Использование символа Якоби

Разница между двумя вычислениями заключается в том, что при использовании символа Лежандра «числитель» должен быть разложен на простые множители, прежде чем символ будет перевернут. Это делает вычисления с использованием символа Лежандра значительно медленнее, чем с использованием символа Якоби, поскольку не существует известного алгоритма полиномиального времени для факторизации целых чисел. [5] Фактически, именно поэтому Якоби ввел этот символ.

Тестирование простоты

Есть еще один способ, которым символы Якоби и Лежандра различаются. Если формула критерия Эйлера используется по модулю составного числа, результат может быть или не быть значением символа Якоби, и на самом деле может даже не быть −1 или 1. Например,

Таким образом, если неизвестно, является ли число n простым или составным, мы можем выбрать случайное число a , вычислить символ Якоби ( а/н) ​​и сравните ее с формулой Эйлера; если они различаются по модулю n , то n является составным; если они имеют одинаковый остаток по модулю n для многих различных значений a , то n является « вероятно простым ».

Это основа вероятностного теста простоты Соловея-Штрассена и его усовершенствований, таких как тест простоты Бейли-ПСВ и тест простоты Миллера-Рабина .

В качестве косвенного использования его можно использовать в качестве процедуры обнаружения ошибок во время выполнения теста простоты Люка-Лемера , который даже на современном компьютерном оборудовании может занять недели при обработке чисел Мерсенна более (наибольшее известное простое число Мерсенна по состоянию на октябрь 2024 года). В номинальных случаях символ Якоби:

Это также справедливо для конечного остатка и, следовательно, может использоваться в качестве проверки вероятной валидности. Однако, если в оборудовании возникает ошибка, существует 50% вероятность того, что результат станет 0 или 1 вместо этого и не изменится с последующими членами (если только не произойдет другая ошибка и не изменит его обратно на -1).

Смотрите также

Примечания

  1. ^ Якоби, CGJ (1837). «Über die Kreisteilung und ihre Anwendung auf die Zahlentheorie». Берихт Ак. Висс. Берлин : 127–136.
  2. Айрленд и Розен, стр. 56–57 или Леммермейер, стр. 10
  3. Коэн, стр. 29–31.
  4. ^ стр. 285
  5. ^ Решето числового поля , самый быстрый из известных алгоритмов, требует
    операции по факторизации n . См. Коэн, стр. 495

Ссылки

Внешние ссылки