![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
SeregaR1Val |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Серёга Репутация: ![]() ![]() ![]() |
В принципе реализация алгоритма понятна, проблемы с нахождением первообразного корня по модулю m
http://ru.wikipedia.org/wiki/Первообразный..._(теория_чисел) И понятия не имею как это запрограммировать, если можете, помогите пожалуйста. В методичке есть реализация на C++, а обучение на Delphi, поэтому непонятно вообще ... Реализация Функция powmod() выполняет бинарное возведение в степень по модулю, а функция generator (int p) - находит первообразный корень по простому модулю (факторизация числа здесь осуществлена простейшим алгоритмом за ). Чтобы адаптировать эту функцию для произвольных , достаточно добавить вычисление функции Эйлера в переменной phi. int powmod (int a, int b, int p) { Сообщение отредактировано: SeregaR1Val - 26.04.2010 20:15 |
![]() ![]() |
SeregaR1Val |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Серёга Репутация: ![]() ![]() ![]() |
var По идее почти все готово, только не получается выполнить проверку для числа g, которое является первообразным корнем по модулю p... Опять появляются очень большие числа, хотя теперь вроде все нормально .... Справка: Первообразный корень по модулю p, такое число g, что положительное наименьшее число k, для которого разность gk - 1 делится на p (gk сравнимо с 1 по модулю p), совпадает c j(p), где j(p) - число натуральных чисел, меньших p и взаимно простых с p. Например, при p =? 7 П. к. по модулю 7 является число 3. Действительно j(7) = 6; числа 31 - 1 = 2, 32 - 1 = 8, 33 - 1 = 26, 34 - 1 = 80, 35 - 1 = 242 не делятся на 7, лишь 36 - 1 = 728 делится на 7. П. к. существуют, когда p = 2, p = 4, p = ta, p = 2ta (где t - простое нечётное число, a - целое ³1), а для других модулей их нет. Число П. к. в этих случаях равно j[j(p)] (числа, разность которых кратна m, не считаются за различные) |
![]() ![]() |
![]() |
Текстовая версия | 27.07.2025 11:12 |