EssayAI
Блог
Блог
Математика и алгоритмы

Символ Лежандра: квадратичные вычеты по простому модулю

20 февраля 2026Время чтения: 11 минут
#символ Лежандра#квадратичные вычеты#теория чисел#закон взаимности#простые числа
Символ Лежандра: квадратичные вычеты по простому модулю

Символ Лежандра - это базовый объект элементарной теории чисел, который коротко отвечает на вопрос «является ли число aa квадратом по простому модулю pp». За одной короткой записью (ap){+1,1,0}\left(\dfrac{a}{p}\right) \in \{+1, -1, 0\} скрывается целая инфраструктура: критерий Эйлера, мультипликативность, квадратичный закон взаимности Гаусса и быстрый алгоритм, который по скорости сопоставим с алгоритмом Евклида. Адриен-Мари Лежандр ввёл этот символ в 1798 году в Essai sur la théorie des nombres, доказательство закона взаимности - целиком заслуга Карла Фридриха Гаусса, который представил восемь разных доказательств в Disquisitiones Arithmeticae (1801).

Определение через квадратичные вычеты

Пусть pp - нечётное простое число, aa - произвольное целое. Число aa называется квадратичным вычетом по модулю pp, если существует xx такое, что x2a(modp)x^2 \equiv a \pmod p, и квадратичным невычетом в противном случае. Символ Лежандра - это компактная индикаторная функция, которая различает три случая:

(ap)={+1,если a - квадратичный вычет и pa,1,если a - квадратичный невычет,0,если pa.\left(\dfrac{a}{p}\right) = \begin{cases} +1, & \text{если } a \text{ - квадратичный вычет и } p \nmid a, \\ -1, & \text{если } a \text{ - квадратичный невычет}, \\ 0, & \text{если } p \mid a. \end{cases}

Условие pap \nmid a принципиально: ноль формально квадрат (0=020 = 0^2), но его обычно исключают из числа вычетов, чтобы получить мультипликативный гомоморфизм (Z/pZ){±1}(\mathbb{Z}/p\mathbb{Z})^* \to \{\pm 1\}. На ненулевых вычетах символ ведёт себя как характер группы (Z/pZ)(\mathbb{Z}/p\mathbb{Z})^* порядка два.

В мультипликативной группе (Z/pZ)(\mathbb{Z}/p\mathbb{Z})^* порядка p1p-1 ровно половина элементов - квадраты, а половина - нет. Это видно из того, что отображение xx2x \mapsto x^2 имеет ядро {±1}\{\pm 1\}, поэтому образ имеет порядок (p1)/2(p-1)/2. Значит, квадратичных вычетов ровно (p1)/2(p-1)/2 штук, и столько же невычетов - на каждом нечётном простом сумма a=1p1(ap)=0\sum_{a=1}^{p-1} \left(\dfrac{a}{p}\right) = 0.

Маленький пример помогает закрепить определение. Возьмём p=7p = 7. Перебираем квадраты ненулевых классов: 12=11^2 = 1, 22=42^2 = 4, 32=23^2 = 2, 42=24^2 = 2, 52=45^2 = 4, 62=16^2 = 1 - все по модулю 77. Различных квадратов получилось ровно три: {1,2,4}\{1, 2, 4\}, как и положено по формуле (p1)/2=3(p-1)/2 = 3. Остальные ненулевые классы {3,5,6}\{3, 5, 6\} - невычеты. Значит (27)=+1\left(\dfrac{2}{7}\right) = +1, (37)=1\left(\dfrac{3}{7}\right) = -1, (07)=0\left(\dfrac{0}{7}\right) = 0. Эта таблица из шести значений - самый прямой способ убедиться, что символ Лежандра вообще существует как объект.

Критерий Эйлера

Самая прямая формула, переводящая символ Лежандра в арифметику по модулю, - критерий Эйлера:

a(p1)/2(ap)(modp).a^{(p-1)/2} \equiv \left(\dfrac{a}{p}\right) \pmod p.

Доказательство держится на малой теореме Ферма: если pap \nmid a, то ap11(modp)a^{p-1} \equiv 1 \pmod p, то есть a(p1)/2a^{(p-1)/2} - корень уравнения x210(modp)x^2 - 1 \equiv 0 \pmod p. У этого уравнения над полем Z/pZ\mathbb{Z}/p\mathbb{Z} ровно два решения, x±1x \equiv \pm 1. Поэтому a(p1)/2a^{(p-1)/2} принимает только значения ±1\pm 1. Если a=b2a = b^2 - квадрат, то a(p1)/2=bp11(modp)a^{(p-1)/2} = b^{p-1} \equiv 1 \pmod p. Среди (p1)/2(p-1)/2 квадратов уже все корни уравнения x(p1)/21(modp)x^{(p-1)/2} \equiv 1 \pmod p исчерпаны (полином степени (p1)/2(p-1)/2 имеет ровно столько корней), значит остальные (p1)/2(p-1)/2 ненулевых классов дают 1-1 - это и есть невычеты.

Критерий хорош тем, что превращает абстрактный вопрос «есть ли корень?» в задачу быстрого возведения в степень: для pp длиной \ell бит вычисление a(p1)/2modpa^{(p-1)/2} \bmod p методом «возведение в квадрат и умножение» занимает O(3)O(\ell^3) битовых операций - это полиномиально. Для маленьких pp годится и в уме: (27)23=81(mod7)\left(\dfrac{2}{7}\right) \equiv 2^3 = 8 \equiv 1 \pmod 7, значит 22 - квадрат по модулю 77 (действительно, 32=923^2 = 9 \equiv 2).

Мультипликативность

Прямое следствие критерия Эйлера - символ Лежандра мультипликативен по числителю:

(abp)=(ap)(bp).\left(\dfrac{ab}{p}\right) = \left(\dfrac{a}{p}\right)\left(\dfrac{b}{p}\right).

Действительно, (ab)(p1)/2=a(p1)/2b(p1)/2(ab)^{(p-1)/2} = a^{(p-1)/2} \cdot b^{(p-1)/2}, и обе части по модулю pp совпадают со значениями символов. Мультипликативность экономит работу: чтобы посчитать (60p)\left(\dfrac{60}{p}\right), разложим 60=223560 = 2^2 \cdot 3 \cdot 5 и получим (60p)=(2p)2(3p)(5p)=(3p)(5p)\left(\dfrac{60}{p}\right) = \left(\dfrac{2}{p}\right)^2 \cdot \left(\dfrac{3}{p}\right) \cdot \left(\dfrac{5}{p}\right) = \left(\dfrac{3}{p}\right)\left(\dfrac{5}{p}\right), поскольку (2p)2=1\left(\dfrac{2}{p}\right)^2 = 1. То же самое работает для отрицательных aa: (ap)=(1p)(ap)\left(\dfrac{-a}{p}\right) = \left(\dfrac{-1}{p}\right)\left(\dfrac{a}{p}\right).

Из мультипликативности и периодичности по aa модуль pp (aa(modp)(ap)=(ap)a \equiv a' \pmod p \Rightarrow \left(\dfrac{a}{p}\right) = \left(\dfrac{a'}{p}\right)) сразу следует: достаточно уметь считать символ от 1-1, 22 и нечётных простых q<pq < p. Дальше любое aa редуцируется по модулю pp, раскладывается на простые множители и собирается обратно.

Частные значения для -1 и 2

Для 1-1 ответ читается с критерия Эйлера: (1p)=(1)(p1)/2\left(\dfrac{-1}{p}\right) = (-1)^{(p-1)/2}. Это даёт правило:

(1p)={+1,p1(mod4),1,p3(mod4).\left(\dfrac{-1}{p}\right) = \begin{cases} +1, & p \equiv 1 \pmod 4, \\ -1, & p \equiv 3 \pmod 4. \end{cases}

Минус единица - квадрат по простому модулю тогда и только тогда, когда pp даёт остаток 11 при делении на 44. Это утверждение восходит к Ферма и связано с теоремой о представлении простого числа в виде суммы двух квадратов: p=a2+b2p = a^2 + b^2 возможно для нечётного pp ровно тогда, когда p1(mod4)p \equiv 1 \pmod 4.

Для двойки формула чуть длиннее, доказывается через лемму Гаусса или через сумму Гаусса:

(2p)=(1)(p21)/8={+1,p±1(mod8),1,p±3(mod8).\left(\dfrac{2}{p}\right) = (-1)^{(p^2-1)/8} = \begin{cases} +1, & p \equiv \pm 1 \pmod 8, \\ -1, & p \equiv \pm 3 \pmod 8. \end{cases}

Эти две формулы - «дополнения» к основному квадратичному закону взаимности и используются на каждом шаге его применения.

Квадратичный закон взаимности Гаусса

Главная теорема, превращающая вычисление символа Лежандра в эффективный алгоритм, - квадратичный закон взаимности (Гаусс, 1796). Для различных нечётных простых pp и qq:

(pq)(qp)=(1)p12q12.\left(\dfrac{p}{q}\right)\left(\dfrac{q}{p}\right) = (-1)^{\tfrac{p-1}{2} \cdot \tfrac{q-1}{2}}.

Иначе говоря, (pq)=(qp)\left(\dfrac{p}{q}\right) = \left(\dfrac{q}{p}\right) всегда, кроме случая когда оба простых сравнимы с 3(mod4)3 \pmod 4 - тогда символы противоположны по знаку. Гаусс называл этот результат «золотой теоремой» (theorema aureum) и за полтора десятилетия дал восемь разных доказательств - через суммы Гаусса, через лемму о подсчёте точек решётки, через теорию циклотомических полиномов. На сегодня известно больше двухсот доказательств, и многие из них работают для разных обобщений (закон взаимности Артина в теории классовых полей - прямой потомок).

Закон взаимности позволяет «поменять числитель и знаменатель местами», после чего числитель обычно становится меньше и можно его редуцировать по новому модулю - задача стремительно сжимается.

Алгоритм вычисления через закон взаимности

Сводя всё вместе, получаем алгоритм, по структуре похожий на алгоритм Евклида:

  1. Редуцировать: aamodpa \gets a \bmod p. Если a=0a = 0, ответ 00.
  2. Вынести знак: (ap)=(1p)(ap)\left(\dfrac{a}{p}\right) = \left(\dfrac{-1}{p}\right) \cdot \left(\dfrac{|a|}{p}\right) если a<0a < 0.
  3. Вынести двойки: a=2kaa = 2^k \cdot a' с нечётным aa', тогда (ap)=(2p)k(ap)\left(\dfrac{a}{p}\right) = \left(\dfrac{2}{p}\right)^k \cdot \left(\dfrac{a'}{p}\right).
  4. Если a=1a' = 1, ответ +1+1. Иначе aa' - нечётное >1> 1, в обозримых задачах оно простое; если нет - разложить и идти по множителям.
  5. Применить закон взаимности: (ap)=±(pa)\left(\dfrac{a'}{p}\right) = \pm \left(\dfrac{p}{a'}\right), знак считается по чётности (a1)(p1)/4(a'-1)(p-1)/4.
  6. Шаги 1–5 повторяются для меньшего символа.

Пример: (2953)\left(\dfrac{29}{53}\right). По взаимности (оба 1(mod4)\equiv 1 \pmod 4) (2953)=(5329)=(2429)=(229)3(329)=(1)3(329)=(293)(1)=(23)=1\left(\dfrac{29}{53}\right) = \left(\dfrac{53}{29}\right) = \left(\dfrac{24}{29}\right) = \left(\dfrac{2}{29}\right)^3 \left(\dfrac{3}{29}\right) = (-1)^3 \cdot \left(\dfrac{3}{29}\right) = -\left(\dfrac{29}{3}\right) \cdot (-1) = \left(\dfrac{2}{3}\right) = -1. Получили 1-1, значит 2929 - квадратичный невычет по модулю 5353. Время работы - O(2)O(\ell^2) битовых операций для \ell-битных чисел, быстрее, чем критерий Эйлера с возведением в степень.

Отличие от символа Якоби

Символ Лежандра определён только для простого знаменателя. Чтобы алгоритм взаимности работал и для составного nn, его обобщают до символа Якоби (an)\left(\dfrac{a}{n}\right) для нечётных n>1n > 1: n=p1e1pkekn = p_1^{e_1} \cdots p_k^{e_k}, и по определению

(an)=i=1k(api)ei.\left(\dfrac{a}{n}\right) = \prod_{i=1}^k \left(\dfrac{a}{p_i}\right)^{e_i}.

Внешне символ Якоби ведёт себя так же - мультипликативен, удовлетворяет аналогичному закону взаимности, тем же формулам для 1-1 и 22. Но, в отличие от символа Лежандра, (an)=+1\left(\dfrac{a}{n}\right) = +1 не означает, что aa - квадрат по модулю nn: например, (215)=(23)(25)=(1)(1)=+1\left(\dfrac{2}{15}\right) = \left(\dfrac{2}{3}\right) \cdot \left(\dfrac{2}{5}\right) = (-1)(-1) = +1, но 22 не является квадратом ни по модулю 1515, ни по модулям 33 и 55 по отдельности. Символ Якоби - про чётность числа невычетов в разложении, не про факт квадратичности.

Зато символ Якоби можно считать тем же алгоритмом взаимности, не зная разложения nn. Это критически важно для криптографии: разложение большого nn - трудная задача, а (an)\left(\dfrac{a}{n}\right) вычисляется за O(2)O(\ell^2).

Применение в криптографии и тест Соловея-Штрассена

Символы Лежандра и Якоби - основа нескольких криптографических протоколов и тестов простоты. Из практики:

  • Тест простоты Соловея-Штрассена (1977): для нечётного n>2n > 2 и случайного a[2,n1]a \in [2, n-1] проверяется сравнение a(n1)/2(an)(modn)a^{(n-1)/2} \equiv \left(\dfrac{a}{n}\right) \pmod n, где слева - степень, справа - символ Якоби. Если nn простое, по критерию Эйлера сравнение верно для всех aa. Если nn составное, по крайней мере половина aa нарушает сравнение, поэтому после kk независимых проб вероятность ложного «простое» не больше 2k2^{-k}. Алгоритм даёт вероятностный тест простоты Монте-Карло, исторически - один из первых.
  • Криптосистема Голдвассер–Микали (1982) - первая семантически безопасная схема шифрования: бит 00 кодируется случайным квадратичным вычетом по модулю n=pqn = pq, бит 11 - невычетом с символом Якоби +1+1. Безопасность сводится к гипотезе о трудности задачи квадратичных вычетов (QRP).
  • Псевдослучайные генераторы на квадратичных вычетах (Blum–Blum–Shub) - извлекают младший бит xi+1=xi2modnx_{i+1} = x_i^2 \bmod n, последовательность вычислительно неотличима от случайной при стандартных предположениях о QRP.
  • Доказательства с нулевым разглашением - символ Якоби часто служит «бесплатным наблюдаемым», на котором строятся интерактивные протоколы.

Частые ошибки

  • Путать с символом Якоби. Если знаменатель составной, +1+1 перестаёт означать «квадрат». Для решения уравнения x2a(modn)x^2 \equiv a \pmod n Якоби только необходимый признак, не достаточный.
  • Забывать про случай pap \mid a. Тогда (ap)=0\left(\dfrac{a}{p}\right) = 0, а не ±1\pm 1. Этот случай обычно отбрасывают на старте, потому что иначе формула (ap)=0\sum \left(\dfrac{a}{p}\right) = 0 ломается.
  • Применять закон взаимности к p=2p = 2. Закон взаимности - про нечётные простые. Двойка обрабатывается отдельной формулой (2p)=(1)(p21)/8\left(\dfrac{2}{p}\right) = (-1)^{(p^2-1)/8}.
  • Не вынести знак минус. (7p)(7p)\left(\dfrac{-7}{p}\right) \neq \left(\dfrac{7}{p}\right) в общем случае. Правильно: (7p)=(1p)(7p)\left(\dfrac{-7}{p}\right) = \left(\dfrac{-1}{p}\right)\left(\dfrac{7}{p}\right), и первый множитель зависит от pmod4p \bmod 4.
  • Считать критерий Эйлера в обычной арифметике. a(p1)/2a^{(p-1)/2} для больших pp - астрономическое число. Нужно возводить в степень по модулю pp, используя «square-and-multiply» и редукцию на каждом умножении.

FAQ

Чем символ Лежандра отличается от символа Якоби? Лежандр требует простого знаменателя pp и тогда (ap)=±1,0\left(\dfrac{a}{p}\right) = \pm 1, 0 - точная индикаторная функция квадратичных вычетов. Якоби - мультипликативное расширение на любые нечётные nn, но равенство +1+1 уже не гарантирует, что aa - квадрат по модулю nn. Алгоритмически их считают одной и той же процедурой (бинарный закон взаимности), но интерпретации разные.

Как быстро считать (ap)\left(\dfrac{a}{p}\right) в уме? Свести aa к малому представителю modp\bmod p, вынести знак и степени двойки по формулам (1p)=(1)(p1)/2\left(\dfrac{-1}{p}\right) = (-1)^{(p-1)/2} и (2p)=(1)(p21)/8\left(\dfrac{2}{p}\right) = (-1)^{(p^2-1)/8}, дальше применить закон взаимности. Это аналог алгоритма Евклида: на каждом шаге числа уменьшаются, и общее число шагов - O(logp)O(\log p). Через критерий Эйлера в уме считать сложнее: a(p1)/2modpa^{(p-1)/2} \bmod p требует длинной цепочки умножений.

Что даёт закон взаимности для алгоритма? Возможность «перевернуть дробь» (pq)(qp)\left(\dfrac{p}{q}\right) \leftrightarrow \left(\dfrac{q}{p}\right) со знаком, зависящим от p,qmod4p, q \bmod 4. После переворота числитель pp можно редуцировать по новому модулю q<pq < p, и задача сжимается. Без закона взаимности пришлось бы каждый раз поднимать в степень (p1)/2(p-1)/2, что медленнее.

Коротко

Символ Лежандра (ap)\left(\dfrac{a}{p}\right) - индикатор квадратичного вычета по простому модулю, принимает значения +1+1, 1-1 или 00. Критерий Эйлера выражает его через степень a(p1)/2modpa^{(p-1)/2} \bmod p, мультипликативность по числителю и формулы для (1p)\left(\dfrac{-1}{p}\right) и (2p)\left(\dfrac{2}{p}\right) позволяют разложить задачу на маленькие куски, а квадратичный закон взаимности Гаусса превращает вычисление в алгоритм типа Евклида за O(logp)O(\log p) шагов. Обобщение до символа Якоби даёт ту же арифметику без знания разложения модуля и лежит в основе теста простоты Соловея-Штрассена и схемы Голдвассер–Микали.

Доверьте текст нейросети EssayAI

Открыть EssayAI

Бесплатно, на русском языке и без VPN

Читайте также