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

Теорема Вильсона: критерий простоты и факториал по модулю

20 февраля 2026Время чтения: 8 минут
#теорема Вильсона#теория чисел#простые числа#факториал#сравнения
Теорема Вильсона: критерий простоты и факториал по модулю

Теорема Вильсона - компактный критерий простоты: число pp простое тогда и только тогда, когда (p1)!+1(p-1)! + 1 делится на pp. Это двусторонний критерий: в одну сторону он узнаёт простые, в другую - отсеивает составные. Утверждение угадал Лейбниц, переоткрыл Джон Вильсон в 1770-м, а первое доказательство дал Лагранж в 1771 году.

Формулировка

Теорема (Вильсон). Натуральное число p2p \geq 2 простое тогда и только тогда, когда

(p1)!1(modp)(p-1)! \equiv -1 \pmod{p}

Эквивалентная запись: (p1)!+10(modp)(p-1)! + 1 \equiv 0 \pmod{p}, то есть «(p1)!+1(p-1)! + 1 делится на pp». Запись 1-1 удобнее, чем p1p - 1, - выражения получаются короче.

Проверим на маленьких числах:

  • p=2p = 2: (21)!=11(mod2)(2-1)! = 1 \equiv -1 \pmod 2 - верно (так как 11(mod2)-1 \equiv 1 \pmod 2).
  • p=3p = 3: 2!=21(mod3)2! = 2 \equiv -1 \pmod 3 - верно.
  • p=5p = 5: 4!=24=5514! = 24 = 5 \cdot 5 - 1, то есть 241(mod5)24 \equiv -1 \pmod 5 - верно.
  • p=7p = 7: 6!=720=710316! = 720 = 7 \cdot 103 - 1, то есть 7201(mod7)720 \equiv -1 \pmod 7 - верно.
  • p=4p = 4 (составное): 3!=62(mod4)3! = 6 \equiv 2 \pmod 4 - не 1-1, как и должно быть.

Подставь своё nn ниже и сверь (n1)!(modn)(n-1)! \pmod n с правилом Вильсона - мы разберём, простое перед нами число или составное, и сразу проверим утверждение Гаусса для составных.

Прямое утверждение: как простые попадают в 1-1

Идея - спарить числа от 11 до p1p-1 по обратным в Z/pZ\mathbb{Z}/p\mathbb{Z}. Когда pp простое, Z/pZ\mathbb{Z}/p\mathbb{Z} - поле, и у каждого ненулевого aa есть единственный обратный a1a^{-1}: aa11(modp)a \cdot a^{-1} \equiv 1 \pmod p.

Сам с собой в паре оказывается только тот aa, для которого a21(modp)a^2 \equiv 1 \pmod p. В поле уравнение a2=1a^2 = 1 имеет ровно два корня: a=1a = 1 и a=1p1a = -1 \equiv p - 1. Остальные элементы разбиваются на пары {a,a1}\{a, a^{-1}\} с произведением 11.

В (p1)!=12(p1)(p-1)! = 1 \cdot 2 \cdots (p-1) пары для a{2,,p2}a \in \{2, \ldots, p-2\} дают 11. Остаются неспаренные 11 и p11p - 1 \equiv -1. Итого (p1)!1(modp)(p-1)! \equiv -1 \pmod p.

На p=7p = 7: 11 и 66 - самообратные; пары {2,4}\{2, 4\} (24=812 \cdot 4 = 8 \equiv 1) и {3,5}\{3, 5\} (35=1513 \cdot 5 = 15 \equiv 1). Произведение - 61(mod7)6 \equiv -1 \pmod 7.

Обратное утверждение: как теорема ловит составных

Это часть, которая делает теорему критерием. Пусть nn составное и n>4n > 4. Покажем, что (n1)!0(modn)(n-1)! \equiv 0 \pmod n, то есть не 1-1.

Запишем n=abn = ab, 1<ab<n1 < a \leq b < n. Случай a<ba < b: оба множителя aa и bb присутствуют среди 1,2,,n11, 2, \ldots, n-1, поэтому n=ab(n1)!n = ab \mid (n-1)!.

Особый случай n=a2n = a^2 при a3a \geq 3: тогда 2aa212a \leq a^2 - 1, и оба множителя aa и 2a2a есть в произведении, значит a2(n1)!a^2 \mid (n-1)!.

Остаётся n=4n = 4: 3!=62(mod4)3! = 6 \equiv 2 \pmod 4, не 00 и не 1-1. Теорема всё равно отличает 44 от простого (так как 231(mod4)2 \neq 3 \equiv -1 \pmod 4), но «(n1)!0(n-1)! \equiv 0» здесь не работает.

Обобщение Гаусса для составных nn

Гаусс уточнил картину. Для составного n>4n > 4 верно сильное утверждение:

(n1)!0(modn),n составное,  n>4(n-1)! \equiv 0 \pmod{n}, \qquad n \text{ составное}, \; n > 4

Доказательство - как выше. Это означает, что разбиение по теореме Вильсона трёхступенчатое:

  • n=1n = 1: (11)!=0!=1(1-1)! = 0! = 1, не подходит ни под одно правило (исключим n=1n = 1 из формулировок).
  • nn простое: (n1)!1(modn)(n-1)! \equiv -1 \pmod n.
  • n=4n = 4: (n1)!2(modn)(n-1)! \equiv 2 \pmod n - единственное «странное» исключение.
  • n>4n > 4 составное: (n1)!0(modn)(n-1)! \equiv 0 \pmod n.

Полезно держать в голове именно эту таблицу - она объясняет, почему частое упрощение «остаток 1-1 \Leftrightarrow простое, остаток 00 \Leftrightarrow составное» работает для всех nn, кроме 44.

Исторический контекст: Лейбниц, Вильсон, Лагранж

Формула упоминалась Лейбницем в неопубликованных заметках конца XVII века - он заметил закономерность, но не доказал. В 1770 году Джон Вильсон переоткрыл утверждение; его учитель Эдвард Уоринг опубликовал формулировку без доказательства, отметив, что «доказательство кажется трудным, так как нет обозначения для простых чисел». Через год Лагранж дал первое доказательство - через те же рассуждения об обратных. Эйлер позже передоказал теорему через свою теорию вычетов. Имя за теоремой закрепилось от Вильсона по традиции публикации.

Поэтому обратную часть («если (p1)!1(p-1)! \equiv -1, то pp простое») часто называют теоремой Лагранжа, хотя в учебниках оба направления собраны под общим именем. Не путать с одноимённой теоремой Лагранжа для групп - это другое утверждение того же автора.

Связь с малой теоремой Ферма

Малая теорема Ферма: для простого pp и a≢0(modp)a \not\equiv 0 \pmod p выполнено ap11(modp)a^{p-1} \equiv 1 \pmod p. Перемножая по всем a=1,,p1a = 1, \ldots, p-1, получим ((p1)!)p11((p-1)!)^{p-1} \equiv 1 - то есть (p1)!(p-1)! корень степени p1p-1 из единицы. Но таких корней в поле Fp\mathbb{F}_p ровно p1p-1 (все ненулевые элементы), поэтому Ферма сам по себе не выделяет 1-1. Это делает только спаривание. Ферма и Вильсон - соседние, но независимые: Ферма про отдельный aa, Вильсон - про их полное произведение.

Почему это не практический тест простоты

Формально (p1)!1(modp)(p-1)! \equiv -1 \pmod p - настоящий критерий (необходимое и достаточное условие). Но проблема - стоимость: чтобы посчитать (p1)!(modp)(p-1)! \pmod p, нужно p2p - 2 умножений по модулю, то есть линейное по pp число операций. Современные тесты - Миллер-Рабин, AKS - работают за полилогарифмическое время (logp)k(\log p)^k. Для числа с 1000 знаков (p101000p \sim 10^{1000}) Миллер-Рабин делает 107\sim 10^7 операций, а Вильсон потребовал бы 10100010^{1000}. Поэтому теорема Вильсона ценна именно теоретически - как критерий, как инструмент для тождеств с факториалами и как кирпич в доказательствах квадратичного закона взаимности.

Типовые задачи

Остаток факториала по простому модулю. Найти 30!(mod31)30! \pmod{31}. По теореме Вильсона 30!130(mod31)30! \equiv -1 \equiv 30 \pmod{31} - без всяких вычислений.

Остаток факториала «с дыркой». Найти 28!(mod31)28! \pmod{31}. Запишем 30!=28!293030! = 28! \cdot 29 \cdot 30. По Вильсону 30!130! \equiv -1, значит 28!2930128! \cdot 29 \cdot 30 \equiv -1. В Z/31Z\mathbb{Z}/31\mathbb{Z}: 29229 \equiv -2, 30130 \equiv -1, так что 2930229 \cdot 30 \equiv 2. Тогда 28!1211615(mod31)28! \equiv -1 \cdot 2^{-1} \equiv -16 \equiv 15 \pmod{31}.

Различить простое и составное на маленьких nn. Классическое упражнение и предлог для tool выше - посчитать (n1)!(modn)(n-1)! \pmod n для n=4,6,7,8,9,11n = 4, 6, 7, 8, 9, 11 и убедиться, что 1-1 возникает только у 77 и 1111.

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

  • «Теорема Вильсона - хороший тест простоты». Нет, на больших nn вычисление (n1)!(n-1)! слишком дорого; используется только как теоретический критерий.
  • Забывают исключение n=4n = 4. В формуле «(n1)!0(n-1)! \equiv 0 для составных» n=4n = 4 - единственный составной случай, для которого она не работает: 3!=62(mod4)3! = 6 \equiv 2 \pmod 4.
  • Путают «1-1» и «00». Для простых остаток 1n1-1 \equiv n - 1, для составных >4> 4 - 00. Это два разных остатка, не одно и то же.
  • Применяют без условия pp простое. Прямое утверждение использует, что Z/pZ\mathbb{Z}/p\mathbb{Z} - поле (все ненулевые обратимы). На составных модулях это рассуждение ломается с первого шага.
  • «a21a^2 \equiv 1 имеет два корня в любом кольце». Только в поле. В Z/8Z\mathbb{Z}/8\mathbb{Z} корней четыре: 1,3,5,71, 3, 5, 7 - именно поэтому теорема и не работает по составному модулю.

FAQ

Зачем теорема, если ей нельзя пользоваться как тестом? Она нужна как критерий в доказательствах (тождества с факториалами, шаги в доказательстве квадратичного закона взаимности), как красивое следствие свойств поля Fp\mathbb{F}_p, и как простой источник задач на сравнения. Практическая проверка простоты - отдельный класс задач, который решается другими алгоритмами.

Есть ли аналог Вильсона для произвольных колец? Есть обобщение Гаусса для (Z/nZ)×(\mathbb{Z}/n\mathbb{Z})^\times: произведение всех обратимых элементов по модулю nn равно 1-1 при n=1,2,4,pk,2pkn = 1, 2, 4, p^k, 2p^k (pp - нечётное простое), и равно 11 во всех остальных случаях. Для простого pp это и есть классический Вильсон.

Можно ли вычислять (n1)!(modn)(n-1)! \pmod n быстрее, чем за nn операций? Известны вычислительные приёмы (например, через разбиение на блоки и быстрое перемножение), доводящие до O(nlogn)O(\sqrt{n} \log n) или около того, но это всё равно куда хуже, чем O((logn)k)O((\log n)^k) у Миллера-Рабина. Принципиально полилогарифмического алгоритма для вычисления (n1)!(modn)(n-1)! \pmod n не известно.

Коротко

Теорема Вильсона: n2n \geq 2 простое     (n1)!1(modn)\iff (n-1)! \equiv -1 \pmod n. Прямое направление - Вильсон/Уоринг; обратное и первое доказательство - Лагранж (1771). Доказывается спариванием обратных в поле Fp\mathbb{F}_p: единственные самообратные элементы - 11 и 1-1, остальные пары дают 11, поэтому (p1)!1(1)=1(p-1)! \equiv 1 \cdot (-1) = -1. Обобщение Гаусса: для составного n>4n > 4 получаем (n1)!0(modn)(n-1)! \equiv 0 \pmod n; единственное исключение - n=4n = 4 с остатком 22. Тестом простоты не служит из-за линейной сложности по nn против полилогарифма у Миллера-Рабина. Используется в теории чисел как критерий и инструмент для тождеств с факториалом по простому модулю.

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

Открыть EssayAI

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

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