RosettaCodeData/Task/Modular-exponentiation/Nim/modular-exponentiation.nim
2026-02-01 16:33:20 -08:00

19 lines
474 B
Nim

import bigints
proc powmod(b, e, m: BigInt): BigInt =
assert e >= 0'bi
var e = e
var b = b
let t = 2'bi
result = initBigInt(1)
while e > 0'bi:
if e mod t == 1'bi:
result = (result * b) mod m
e = e div t
b = (b.pow 2) mod m
var
a = initBigInt("2988348162058574136915891421498819466320163312926952423791023078876139")
b = initBigInt("2351399303373464486466122544523690094744975233415544072992656881240319")
echo powmod(a, b, 10'bi.pow 40)