Найти остаток от деления 17^2005 на 20 - Pascal
Формулировка задачи:
не могу решить задание
найти остаток от деления 17^2005 на 20
Решение задачи: «Найти остаток от деления 17^2005 на 20»
textual
Листинг программы
Function ModExp(a, d, m: LongInt): LongInt; Var b: LongInt; Begin b := 1; While (d > 0) do Begin If (d mod 2 = 0) then Begin d := d div 2; a := (a * a) mod m; End Else Begin Dec(d); b := (b * a) mod m; End; End; ModExp := b; End;
Объяснение кода листинга программы
- В функции
ModExp
определены три переменные:a
,d
иm
. - Переменная
b
инициализируется значением 1. - Запускается цикл
While
, который будет выполняться до тех пор, покаd
больше 0. - Внутри цикла проверяется, делится ли
d
на 2 без остатка. - Если это условие выполняется, то происходит внутренний цикл.
- Внутренний цикл проверяет, равен ли остаток от деления
d
на 2, нулю. - Если это условие выполняется, то
d
делится на 2 и переменнаяa
вычисляется как квадрат числаa
по модулюm
. - Если условие из пункта 6 не выполняется, то
d
уменьшается на 1, а переменнаяb
вычисляется как произведениеb
иa
по модулюm
. - После окончания внутреннего цикла значение переменной
b
присваивается переменнойModExp
. - Цикл
While
завершается, и функцияModExp
возвращает значение переменнойModExp
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д