RosettaCodeData/Task/Modular-exponentiation/Miranda/modular-exponentiation.miranda
2026-04-30 12:34:36 -04:00

12 lines
526 B
Text

main :: [sys_message]
main = [Stdout (show answer)]
where a = 2988348162058574136915891421498819466320163312926952423791023078876139
b = 2351399303373464486466122544523690094744975233415544072992656881240319
answer = modpow a b (10^40)
modpow :: num->num->num->num
modpow = mp 1
where mp r b 0 m = r
mp r b p m = mp r' ((b * b) mod m) (p div 2) m
where r' = (r * b) mod m, if p mod 2 = 1
r' = r, otherwise