exponenta event banner

jacobiSymbol

Синтаксис

Описание

пример

J = jacobiSymbol(a,n) возвращает значение символа Якоби для целого числа a и положительное нечетное целое число n.

Примеры

свернуть все

Найдите символ Якоби для a = 1,2,..., 9 и n = 3.

a = 1:9;
n = 3;
J = jacobiSymbol(a,n)
J = 1×9

     1    -1     0     1    -1     0     1    -1     0

Символ Якоби является периодическим по отношению к своему первому аргументу, где (a) = (bn), если a≡b (modn).

Найдите символ Якоби для a = 28 и n = 9.

J = jacobiSymbol(28,9)
J = 1

Символ Якоби - полностью мультипликативная функция, где символ Якоби удовлетворяет соотношению (an) = (a1n) × (a2n) ×... (arn) для a = a1 × a2 ×... ar. Показать, что символ Якоби следует этому соотношению для a = 28 = 2 × 2 × 7.

Ja = jacobiSymbol(2,9)*jacobiSymbol(2,9)*jacobiSymbol(7,9)
Ja = 1

Символ Якоби также удовлетворяет соотношению (an) = (an1) × (an2) ×... (anr) для n = n1 × n2 ×... nr. Показать, что символ Якоби следует этому соотношению для n = 9 = 3 × 3.

Jb = jacobiSymbol(28,3)*jacobiSymbol(28,3)
Jb = 1

Для теста примитивности Соловея-Штрассена можно использовать символ Якоби (an). Если нечётное целое число n > 1 является простым, то конгруэнтность

(а) ≡a (n-1 )/2 (модн)

должен содержать для всех целых чисел a. Если существует целое число a в {1,2,..., n-1} так, что соотношение конгруэнтности не удовлетворяется, то n не является простым.

Проверьте, является ли n = 561 простым или нет. Выберите a = 19 и выполните тест примитивности. Сравните два значения в уравнении конгруэнтности.

Сначала вычислите левую сторону соотношения конгруэнтности с помощью символа Якоби.

n = 561;
a = 14;
J = jacobiSymbol(a,n)
J = 1

Вычислите правую сторону уравнения конгруэнтности.

m = powermod(a,(n-1)/2,n)
m = 67

Целое число n = 561 не является простым, поскольку оно не удовлетворяет соотношению конгруэнтности для a = 19.

checkPrime = mod(J,n) == m
checkPrime = logical
   0

Затем проверьте, является ли n = 557 простым или нет. Выберите a = 19 и выполните тест примитивности.

n = 557;
a = 19;
J = jacobiSymbol(a,n);
m = powermod(a,(n-1)/2,n);

Целое число n = 557, вероятно, является простым, поскольку оно удовлетворяет соотношению конгруэнтности для a = 19.

checkPrime = mod(J,n) == m
checkPrime = logical
   1

Выполните тест примитивности для всех a в {1,2,..., 556}, чтобы подтвердить, что целое число n = 557 действительно является простым.

a = 1:n-1;
J = jacobiSymbol(a,n);
m = powermod(a,(n-1)/2,n);
checkPrime = all(mod(J,n) == m)
checkPrime = logical
   1

Проверьте результат с помощью isprime.

isprime(n)
ans = logical
   1

Входные аргументы

свернуть все

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

Типы данных: single | double | sym

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

Типы данных: single | double | sym

Выходные аргументы

свернуть все

Выходное значение, возвращенное как –1, 0, или 1.

Типы данных: single | double | sym

Подробнее

свернуть все

Символ Якоби

Символ Якоби (an) определяется как произведение символов Лежандра

(an) = (ap1) k1 (ap2) k2... (apr) kr

для целого числа a и положительного нечетного числа n с простой факторизацией

n = p1k1p2k2... prkr.

Символ Лежандра (ap) для целого числа a и нечётного простого числа p определяется как

(ap) = 0if  a≡0 ( mod p 1if  a является квадратичным остатком  по модулю p или  x2≡a ( mod p)  имеет ненулевое решение для x −  1if a является квадратичным нерезидентным  по модулю p или x2≡a ( mod p ) не имеет  решений для x.

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

Ссылки

[1] Дитцфельбингер, M. Primality Test in Polynomial Time: от рандомизированных алгоритмов до «PRIMES Is in P». Спрингер, 2004.

См. также

| |

Представлен в R2020a