How to resolve the algorithm Modular exponentiation step by step in the AutoHotkey programming language
Published on 12 May 2024 09:40 PM
How to resolve the algorithm Modular exponentiation step by step in the AutoHotkey programming language
Table of Contents
Problem Statement
Find the last 40 decimal digits of
a
b
{\displaystyle a^{b}}
, where
A computer is too slow to find the entire value of
a
b
{\displaystyle a^{b}}
. Instead, the program must use a fast algorithm for modular exponentiation:
a
b
mod
m
{\displaystyle a^{b}\mod m}
. The algorithm must work for any integers
a , b , m
{\displaystyle a,b,m}
, where
b ≥ 0
{\displaystyle b\geq 0}
and
m
0
{\displaystyle m>0}
.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Modular exponentiation step by step in the AutoHotkey programming language
Source code in the autohotkey programming language
#NoEnv
#SingleInstance, Force
SetBatchLines, -1
#Include mpl.ahk
MP_SET(base, "2988348162058574136915891421498819466320163312926952423791023078876139")
, MP_SET(exponent, "2351399303373464486466122544523690094744975233415544072992656881240319")
, MP_SET(modulus, "10000000000000000000000000000000000000000")
, NumGet(exponent,0,"Int") = -1 ? return : ""
, MP_SET(result, "1")
, MP_SET(TWO, "2")
while !MP_IS0(exponent)
MP_DIV(q, r, exponent, TWO)
, (MP_DEC(r) = 1
? (MP_MUL(temp, result, base)
, MP_DIV(q, result, temp, modulus))
: "")
, MP_DIV(q, r, exponent, TWO)
, MP_CPY(exponent, q)
, MP_CPY(base1, base)
, MP_MUL(base2, base1, base)
, MP_DIV(q, base, base2, modulus)
msgbox % MP_DEC(result)
Return
You may also check:How to resolve the algorithm Horner's rule for polynomial evaluation step by step in the Forth programming language
You may also check:How to resolve the algorithm Continued fraction step by step in the Icon programming language
You may also check:How to resolve the algorithm N-smooth numbers step by step in the JavaScript programming language
You may also check:How to resolve the algorithm Infinity step by step in the Trith programming language
You may also check:How to resolve the algorithm Mertens function step by step in the MAD programming language