Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
25
Task/Modular-exponentiation/REXX/modular-exponentiation.rexx
Normal file
25
Task/Modular-exponentiation/REXX/modular-exponentiation.rexx
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
/* REXX Modular exponentiation */
|
||||
|
||||
say powerMod(,
|
||||
2988348162058574136915891421498819466320163312926952423791023078876139,,
|
||||
2351399303373464486466122544523690094744975233415544072992656881240319,,
|
||||
1e40)
|
||||
return
|
||||
|
||||
powerMod: procedure
|
||||
parse arg base, exponent, modulus
|
||||
|
||||
/* we need a numeric precision of twice the modulus size, */
|
||||
/* the exponent size, or the base size, whichever is largest */
|
||||
numeric digits max(2 * length(format(modulus, , , 0)),,
|
||||
length(format(exponent, , , 0)), length(format(base, , , 0)))
|
||||
|
||||
result = 1
|
||||
base = base // modulus
|
||||
do while exponent > 0
|
||||
if exponent // 2 = 1 then
|
||||
result = result * base // modulus
|
||||
base = base * base // modulus
|
||||
exponent = exponent % 2
|
||||
end
|
||||
return result
|
||||
Loading…
Add table
Add a link
Reference in a new issue