Modular exponentiation: Difference between revisions

Line 2,231:
{{out}}
<pre>1527229998585248450016808958343740453059</pre>
 
=={{header|ObjectIcon}}==
{{trans|Icon}}
 
<syntaxhighlight lang="objecticon">
# -*- ObjectIcon -*-
#
# This program is close to being an exact copy of the Icon.
#
 
import io # <-- Object Icon requires this for I/O.
 
procedure main()
local a, b # <-- Object Icon forces you to declare your variables.
 
a := 2988348162058574136915891421498819466320163312926952423791023078876139
b := 2351399303373464486466122544523690094744975233415544072992656881240319
 
# You could leave out the "io." in the call to "write" below,
# because there is some "compatibility with regular Icon" support in
# the io package.
io.write("last 40 digits = ", mod_power(a,b,(10^40)))
end
 
procedure mod_power(base, exponent, modulus)
local result
 
result := 1
while exponent > 0 do
{
if exponent % 2 = 1 then
result := (result * base) % modulus
exponent /:= 2
base := base ^ 2 % modulus
}
return result
end
</syntaxhighlight>
 
<pre>$ oiscript modular-exponentiation-OI.icn
last 40 digits = 1527229998585248450016808958343740453059
</pre>
 
=={{header|OCaml}}==
1,448

edits