MakarovSuites
Русский
EnglishDeutschРусскийУкраїнськаFrançaisEspañolItalianoPolski
Связь и лицензии

Math

Часы по модулю

Циферблат из m делений и одна стрелка. Сложение рисует звезду, замыкающуюся за m/НОД(s, m) ходов; умножение — цикл, длина которого делит φ(m). У некоторых модулей первообразных корней нет вовсе, и карточка это говорит: такова теорема, а не неудача поиска.

Часы по модулю — Изображение из программы
Изображение из программы

Что происходит

Стрелка идёт ход за ходом, и деления, которых она коснулась, загораются; те, что остались тёмными, отвечают на вопрос раньше, чем панель назовёт НОД. Шаг 8 на циферблате из 12 рисует треугольник и зажигает три деления; шаг 5 рисует звезду и зажигает все двенадцать, потому что у 5 и 12 нет общего делителя. Замкнутая фигура и есть результат, поэтому она остаётся на экране, а не стирается. Переключи на умножение — правило меняется: стрелка идёт k → k·g, длина цикла есть ПОРЯДОК g, и теорема Эйлера говорит, что этот порядок обязан ДЕЛИТЬ φ(m): на циферблате из 17 возможны только длины 1, 2, 4, 8 и 16. Шаг, порядок которого равен ровно φ(m), называется первообразным корнем, и на простом циферблате он обходит все ненулевые деления — это и есть задача карточки. Сколько таких шагов? Ровно φ(φ(m)) — два для 7, четыре для 11, десять для 23, — и панель считает их ещё и перебором, так что формула и поиск сходятся у тебя на глазах. И то, ради чего стоит задержаться: первообразные корни существуют не у всякого модуля. Только при 1, 2, 4, p^k и 2p^k, поэтому на циферблате из 8, 12, 15, 16, 20, 21 или 24 их нет ни одного. Карточка говорит это вслух, а не молча ничего не находит: «ответа нет» и «я не нашёл» — разные утверждения.

Уравнения модуля
Уравнения
сложение:  стрелка в положении k переходит в k + s (mod m);  цикл замыкается после m / gcd(s, m) ходов и посещает КАЖДУЮ отметку ровно тогда, когда gcd(s, m) = 1
m = 12, s = 8 → 3 отметки (треугольник);  m = 12, s = 5 → все 12;  m = 360, s = 84 → 30
умножение:  k → k·g (mod m);  длина цикла есть ПОРЯДОК g, и по теореме Эйлера он делит phi(m)
m = 17: phi = 16 и встречающиеся порядки 1, 2, 4, 8, 16 - других быть не может
первообразный корень есть такое g, порядок которого РАВЕН phi(m); для простого m это означает цикл через все m − 1 ненулевых отметок
сколько их:  ровно phi(phi(m)), когда они существуют:  m = 7 → 2 (наименьший 3), m = 11 → 4 (наименьший 2), m = 23 → 10 (наименьший 5)
КОГДА ОНИ СУЩЕСТВУЮТ:  только для m = 1, 2, 4, p^k и 2p^k.  Для 8, 12, 15, 16, 20, 21, 24 первообразного корня НЕТ вообще - это теорема, а не неудачный поиск
phi вычисляется здесь, а не берётся из таблицы:  phi(7) = 6, phi(9) = 6, phi(12) = 4, phi(16) = 8, phi(36) = 12, phi(100) = 40, phi(1000) = 400

Другие эксперименты

К каталогу
Решето и плотность простых — Изображение из программы

Math

Решето и плотность простых

Проведите решето руками на пронумерованных плитках: возьмите следующий делитель, предскажите, откуда начнётся его волна, и смотрите, как она вычёркивает кратные — уже вычеркнутые лишь задеваются. Рядом — pi(x) по счёту против приближений x/ln x и Li(x).

RSA на маленьких числах — Изображение из программы

Math

RSA на маленьких числах

Сообщение проходит две степени по модулю на столе из дерева и латуни. Выполняйте целочисленные шаги, исследуйте перестановку и ищите делитель с точным счётчиком.

Хеши и корзины — Изображение из программы

Math

Хеши и корзины

Сортировочный стол: ключи — бумажные бирки, каретка хеширует каждую и бросает в корзину с номером хеша, коллизия — два разных ключа в одной корзине. Хеш — именованная функция: сумма кодов, многочлен с основанием 31, FNV-1a — или равномерный оракул, стоящий за кривой дней рождения. Отредактируй ключ, посмотри вычисление хеша по символам, переверни один бит и сосчитай сдвинувшиеся биты хеша; сравни две функции на одних ключах.