33 lines
846 B
Plaintext
33 lines
846 B
Plaintext
# -*- 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
|