Часть (mod p) относится не к правой части, а к знаку равенства: она говорит, что по модулю p, pow (a, q) и 1 равны . Например, «по модулю 10, 246126 и 7868726 равны» (и они также равны 6 по модулю 10): два числа x и y равны по модулю p, если они имеют одинаковый остаток при делении на p, или эквивалентно, если p делит xy.
Поскольку вы, похоже, исходите из перспективы программирования, можно сказать, что по-другому pow (a, q)% p = 1, где "%" - это оператор "остатка", реализованный на нескольких языках (при условии, что р> 1).
Вам следует прочитать статью в Википедии о Модульная арифметика , или любую книгу по элементарной теории чисел (или даже книгу по криптографии, так как она может вводить модульную арифметику).
Чтобы ответить на ваш другой вопрос: не существует общей формулы для нахождения такого a (насколько мне известно) в целом. Предполагая, что p простое число, и используя небольшую теорему Ферма , чтобы уменьшить q по модулю p-1, и предполагая, что q делит p-1 (иначе такого a не существует), вы можете произвести такое a , взяв первообразный корень из p и подняв его до степени (p-1) / q. [И вообще, когда p не простое число, вы можете уменьшить q по модулю & phi; (p), а затем предположить, что оно делит & phi; (p), и вы знаете примитивный корень (скажем, r) mod p, вы можете взять r к сила & phi; (p) / q, где & phi; - общая функция - это вытекает из теоремы Эйлера .]