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