EssayAI
Блог
Блог

Как найти первообразный корень: критерий и пример

Запрос

Дано: модуль n=41n = 41, кандидаты 2, 3, 5 и 6. Найти: наименьший первообразный корень по модулю 41.

Модуль простой, поэтому первообразный корень заведомо существует, а на проверку одного кандидата уходит не сорок возведений в степень, а всего два. Ответ: наименьший первообразный корень по модулю 41 равен 6, его порядок равен φ(41)=40\varphi(41) = 40, а всего таких корней по этому модулю 16. Калькулятор сверху прогоняет ту же проверку для любого модуля до 200 и рисует, где замыкается цикл степеней.

Решение по шагам

Дано. n=41n = 41. Найти: наименьшее gg, у которого степени g1,g2,…,g40g^1, g^2, \dots, g^{40} пробегают все ненулевые вычеты по модулю 41.

Шаг 1. Считаем функцию Эйлера. Число 41 простое, значит, обратим каждый вычет от 1 до 40:

φ(41)=41−1=40.\varphi(41) = 41 - 1 = 40.

Порядок элемента ord⁡(g)\operatorname{ord}(g) - это наименьшая степень, дающая остаток 1. По теореме Лагранжа он всегда делит φ(n)\varphi(n), а первообразный корень - это элемент, у которого порядок равен φ(n)\varphi(n) целиком.

Шаг 2. Раскладываем функцию Эйлера на простые множители.

40=23⋅5,q∈{2, 5}.40 = 2^3 \cdot 5, \qquad q \in \{2,\ 5\}.

Нужны только сами простые делители, кратности не играют роли: проверять 4 и 8 вместо двойки незачем. Если модуль большой, разложение удобно получать перебором простых множителей.

Шаг 3. Выписываем контрольные показатели. Их ровно столько, сколько простых делителей: 40/2=2040 / 2 = 20 и 40/5=840 / 5 = 8. Критерий выглядит так:

g20≢1(mod41)иg8≢1(mod41).g^{20} \not\equiv 1 \pmod{41} \quad \text{и} \quad g^{8} \not\equiv 1 \pmod{41}.

Если хотя бы одна из двух степеней даёт единицу, порядок кандидата меньше сорока, и он отпадает.

Шаг 4. Кандидат g=2g = 2. Считаем обе степени через квадраты: 28=256=6⋅41+102^8 = 256 = 6 \cdot 41 + 10, то есть 28≡102^8 \equiv 10 - первое условие выполнено. Но 210=1024=24⋅41+40≡−12^{10} = 1024 = 24 \cdot 41 + 40 \equiv -1, откуда 220≡(−1)2≡12^{20} \equiv (-1)^2 \equiv 1. Двойка отпадает, её порядок равен 20.

Шаг 5. Кандидат g=3g = 3. Здесь всё обрывается на первом же шаге: 34=81≡40≡−13^4 = 81 \equiv 40 \equiv -1, значит 38≡1(mod41)3^8 \equiv 1 \pmod{41}. Тройка отпадает, её порядок равен 8 - она крутится всего по восьми вычетам из сорока.

Шаг 6. Четвёрку пропускаем без счёта. Полный квадрат никогда не бывает первообразным корнем по нечётному простому модулю: для g=a2g = a^2 имеем g(p−1)/2=ap−1≡1g^{(p-1)/2} = a^{p-1} \equiv 1 по малой теореме Ферма. Так что 4, 9, 16, 25 и 36 из перебора вычёркиваются сразу.

Шаг 7. Кандидат g=5g = 5. 54=625=15⋅41+10≡105^4 = 625 = 15 \cdot 41 + 10 \equiv 10, дальше 55≡10⋅5=50≡95^5 \equiv 10 \cdot 5 = 50 \equiv 9 и 510≡92=81≡−15^{10} \equiv 9^2 = 81 \equiv -1. Значит, 520≡15^{20} \equiv 1, и пятёрка отпадает с порядком 20.

Шаг 8. Кандидат g=6g = 6. Поднимаемся по квадратам:

62=36,64≡362=1296=31⋅41+25≡25,68≡252=625≡10≢1,65≡25⋅6=150≡27,610≡272=729≡32,620≡322=1024≡40≡−1≢1.\begin{aligned} 6^2 &= 36, \\ 6^4 &\equiv 36^2 = 1296 = 31 \cdot 41 + 25 \equiv 25, \\ 6^8 &\equiv 25^2 = 625 \equiv 10 \not\equiv 1, \\ 6^5 &\equiv 25 \cdot 6 = 150 \equiv 27, \\ 6^{10} &\equiv 27^2 = 729 \equiv 32, \\ 6^{20} &\equiv 32^2 = 1024 \equiv 40 \equiv -1 \not\equiv 1. \end{aligned}

Обе контрольные степени отличны от единицы, поэтому порядок шестёрки не может быть собственным делителем сорока - он равен сорока.

Ответ: наименьший первообразный корень по модулю 41 равен g=6g = 6.

Кандидатg8 mod 41g^{8} \bmod 41g20 mod 41g^{20} \bmod 41ПорядокВывод
210120отпадает
31408отпадает
518120отпадает
6104040первообразный корень

Формула и откуда она берётся

Формально gg называется первообразным корнем по модулю nn, если его порядок равен φ(n)\varphi(n), то есть степени gg порождают всю группу обратимых вычетов. Критерий, которым мы пользовались, обычно записывают так:

ord⁡n(g)=φ(n)  ⟺  gφ(n)/q≢1(modn)  для всех простых q∣φ(n).\operatorname{ord}_n(g) = \varphi(n) \iff g^{\varphi(n)/q} \not\equiv 1 \pmod{n} \ \text{ для всех простых } q \mid \varphi(n).

Почему этого достаточно? Пусть порядок dd меньше φ(n)\varphi(n). По теореме Лагранжа он делит φ(n)\varphi(n), причём делит строго, значит, частное φ(n)/d\varphi(n)/d имеет хотя бы один простой делитель qq. Тогда dd делит φ(n)/q\varphi(n)/q, и степень gφ(n)/qg^{\varphi(n)/q} обязана дать единицу - как раз то, что мы ловим. Обратное очевидно: если порядок равен φ(n)\varphi(n), никакая меньшая степень единицы не даёт.

Отсюда и экономия. Наивная проверка «посчитать все степени, пока не вернётся 1» требует до φ(n)\varphi(n) умножений, критерий - столько возведений в степень, сколько у φ(n)\varphi(n) разных простых делителей. Для модуля 41 это два возведения вместо сорока, и каждое делается бинарным алгоритмом за десяток умножений.

Сколько корней и стоит ли надеяться на двойку

Если первообразный корень gg найден, все остальные получаются как gkg^k, где kk взаимно просто с φ(n)\varphi(n). Поэтому их количество равно φ(φ(n))\varphi(\varphi(n)), у нас - φ(40)=16\varphi(40) = 16. Это почти 40 процентов всех вычетов, так что перебор снизу обычно заканчивается на первом десятке: по модулю 41 корнями служат 6, 7, 11, 12, 13, 15, 17, 19 и ещё восемь чисел.

Но гарантии, что подойдёт двойка, нет никакой, и на этом чаще всего спотыкаются. По модулям 11, 13, 19, 29, 37, 101 наименьший первообразный корень действительно равен 2, по модулю 41 - уже 6, а по модулю 191 - целых 19. Ничего кроме перебора с критерием тут не предложить: формулы для наименьшего корня не существует, есть только оценки сверху. Проверить очередного кандидата на взаимную простоту с модулем помогает алгоритм Евклида, а для простого модуля это условие выполняется автоматически.

Когда первообразного корня не существует

Для составного модуля вопрос не сводится к перебору: корня может не быть вовсе. Первообразный корень существует ровно по модулям

n=1, 2, 4, pk, 2pk,p - нечётное простое.n = 1,\ 2,\ 4,\ p^k,\ 2p^k, \qquad p \ \text{- нечётное простое}.

Возьмём n=8n = 8: обратимые вычеты 1, 3, 5, 7, их четыре, то есть φ(8)=4\varphi(8) = 4. Но 32=9≡13^2 = 9 \equiv 1, 52=25≡15^2 = 25 \equiv 1, 72=49≡17^2 = 49 \equiv 1 - порядок каждого не больше двух, до четвёрки не дотягивает никто. А вот по модулю 18=2⋅3218 = 2 \cdot 3^2 корень есть: φ(18)=6\varphi(18) = 6, и степени пятёрки дают 5, 7, 17, 13, 11, 1 - все шесть обратимых вычетов. Так что перед перебором сначала проверь модуль на простоту или разложи его и убедись, что он нужного вида.

Таблица степеней и индексы

Когда корень найден, из него строят таблицу степеней - по сути, таблицу логарифмов в конечном поле. Для g=6g = 6 и модуля 41 начало выглядит так:

kk12345678910
6k mod 416^k \bmod 416361125273929101932

Обратная функция называется индексом, или дискретным логарифмом: ind⁡(a)\operatorname{ind}(a) - тот показатель kk, при котором 6k≡a6^k \equiv a. Индексы превращают умножение в сложение по модулю 40: ind⁡(2)=26\operatorname{ind}(2) = 26, ind⁡(3)=15\operatorname{ind}(3) = 15, и сумма 26+15=41≡1(mod40)26 + 15 = 41 \equiv 1 \pmod{40} ровно совпадает с ind⁡(6)=1\operatorname{ind}(6) = 1, потому что 2⋅3=62 \cdot 3 = 6.

Работает это и на корнях. Пусть надо решить x3≡37(mod41)x^3 \equiv 37 \pmod{41}. По таблице ind⁡(37)=32\operatorname{ind}(37) = 32, значит 3ind⁡(x)≡32(mod40)3 \operatorname{ind}(x) \equiv 32 \pmod{40}, откуда ind⁡(x)=24\operatorname{ind}(x) = 24 и x=624≡16x = 6^{24} \equiv 16. Проверка: 163=4096=99⋅41+3716^3 = 4096 = 99 \cdot 41 + 37. Обратный ход - от aa к индексу - вычислительно тяжёл: на этом стоят обмен ключами Диффи-Хеллмана и подпись Эль-Гамаля, а быстрые методы вроде алгоритма Полига-Хеллмана работают, лишь когда φ(n)\varphi(n) раскладывается на мелкие множители.

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

  • Раскладывают на множители сам модуль nn, а не φ(n)\varphi(n). В критерий входят простые делители порядка группы, а не модуля: для 41 это делители сорока.
  • Берут все делители φ(n)\varphi(n), а не простые. Проверка g40/4g^{40/4} и g40/8g^{40/8} - лишняя работа, которая к тому же путает: для двойки среди делителей достаточно одного показателя 20.
  • Забывают про условие gcd⁡(g,n)=1\gcd(g, n) = 1 для составного модуля. Число, имеющее с модулем общий делитель, не даёт единицу ни в какой степени, и порядок у него не определён.
  • Считают степени наивно, перемножая по одному разу. При модуле в несколько сотен это терпимо, при криптографическом - нет: нужно возведение по двоичной записи показателя.
  • Останавливаются, как только одна из проверок дала не единицу. Условие должно выполняться для всех простых делителей сразу: у тройки по модулю 41 первая проверка проходит, а вторая валит.
  • Путают первообразный корень с квадратным корнем по модулю или с корнем многочлена. Здесь речь о порождающем элементе группы, а не о решении уравнения.

FAQ

Чем порядок элемента отличается от первообразного корня? Порядок есть у каждого обратимого вычета: это наименьший показатель, возвращающий остаток 1. Первообразный корень - частный случай, когда порядок дотянул до максимума φ(n)\varphi(n). Скажем, по модулю 41 у тройки порядок 8, у двойки 20, а у шестёрки 40, и только шестёрка считается первообразным корнем.

Обязательно ли начинать перебор с двойки? Да, если нужен именно наименьший корень: кандидаты проверяются подряд, 2, 3, 5, 6 и так далее, а полные квадраты и другие степени можно пропускать. Если корень нужен любой, в криптографии часто берут простое вида p=2q+1p = 2q + 1: тогда у φ(p)=2q\varphi(p) = 2q всего два простых делителя, и проверка занимает две операции.

Что делать, если φ(n)\varphi(n) не раскладывается? Это и есть узкое место метода: критерий требует знать простые делители φ(n)\varphi(n). Для больших модулей поступают наоборот - сначала конструируют простое число с заранее известным разложением p−1p - 1, а потом ищут корень.

Сколько первообразных корней по простому модулю pp? Ровно φ(p−1)\varphi(p-1) штук. Для p=41p = 41 это φ(40)=16\varphi(40) = 16, для p=101p = 101 уже φ(100)=40\varphi(100) = 40. Найдя один корень, остальные получают как gkg^k с gcd⁡(k,φ(n))=1\gcd(k, \varphi(n)) = 1, заново перебирать не нужно.

Коротко

  1. Проверь, что модуль имеет вид 2, 4, pkp^k или 2pk2p^k: иначе первообразного корня не существует.
  2. Посчитай φ(n)\varphi(n) (для простого nn это n−1n - 1) и разложи её на простые множители: φ(41)=40=23⋅5\varphi(41) = 40 = 2^3 \cdot 5.
  3. Для каждого простого делителя qq посчитай gφ(n)/q mod ng^{\varphi(n)/q} \bmod n; здесь это показатели 20 и 8.
  4. Единица хотя бы в одной проверке - кандидат отпадает: так выбывают 2 (порядок 20), 3 (порядок 8) и 5 (порядок 20).
  5. Ответ: g=6g = 6 - наименьший первообразный корень по модулю 41, всего их φ(40)=16\varphi(40) = 16.
Задача в тетради или методичке? Сфотографируйте условие - сервис распознает его и решит по шагам с пояснениями.

Похожие задачи

Теория чисел/криптография

Как найти функцию Эйлера: разбор на числе 7560

Как найти функцию Эйлера: разбор числа 7560 по шагам, каноническое разложение, формула через произведение скобок по простым делителям, проверка мультипликативностью и теорема Эйлера.

Теория чисел/криптография

Как найти обратное по модулю: расширенный алгоритм Евклида

Как найти обратное по модулю: разбор на числах 37 и 120, условие существования через НОД, таблица расширенного алгоритма Евклида, приведение коэффициента и проверка остатка.

Теория чисел/криптография

Как решить систему сравнений: китайская теорема об остатках

Как решить систему сравнений x = 2 (mod 3), x = 3 (mod 5), x = 2 (mod 7): проверка взаимной простоты модулей, сборка ответа по китайской теореме об остатках и проверка подстановкой.

Теория чисел/криптография

Как решить сравнение по модулю: 42x = 30 (mod 78)

Как решить сравнение по модулю на примере 42x = 30 (mod 78): критерий разрешимости через НОД, число решений, сокращение сравнения вместе с модулем и все шесть классов вычетов.

Теория чисел/криптография

Как найти НОК двух чисел: два способа с примером

Как найти НОК двух чисел на примере 126 и 120: разложение на простые множители со старшими степенями, формула через НОД, проверка ответа и задача про шестерни с зубьями.

Теория чисел/криптография

Как сгенерировать ключи RSA: пример на малых числах

Как сгенерировать ключи RSA: разбор на числах p = 43 и q = 59, расчёт модуля и функции Эйлера, выбор открытой экспоненты, поиск закрытой расширенным алгоритмом Евклида, проверка шифрованием.