Суббота, 16.12.2017, 15:57
Тверь-Робот
Главная | Быстрое возведение в степень - Форум | Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Вопросы роботостроительства в Твери » Прочие вопросы программирования роботов » Быстрое возведение в степень (Возведение в степень по модулю)
Быстрое возведение в степень
avaria69Дата: Среда, 15.05.2013, 08:57 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 2
Репутация: 0
Статус: Offline
def Zpow(a, p, m):

    """

    Функция возведения в степень по модулю

    принимает 3 аргумента

    a - сам математический аргумент, возводимое число

    p - степень

    m - модуль

    """

    result = 1

    while p > 2: # когда степень сократится до квадрата и меньше - завершаем

        if p % 2 == 0: # если степень кратна 2

            a = (a ** 2) % m

            p = p // 2 # целочисленное деление (на всякий)

        else:

            result = (result * a) % m

            p = p - 1

    a = (a ** p) % m

    result = (result * a) % m

    return result

http://sib.ktu10.com/node/5563  
[code] [/code]
 
Форум » Вопросы роботостроительства в Твери » Прочие вопросы программирования роботов » Быстрое возведение в степень (Возведение в степень по модулю)
Страница 1 из 11
Поиск:

Copyright Ассоциация Тверь-Робот © 2017Бесплатный конструктор сайтов - uCoz