RosettaCodeData/Task/Modular-exponentiation/Oforth/modular-exponentiation.oforth
2016-12-05 23:44:36 +01:00

6 lines
206 B
Text

: powmod(base, exponent, modulus)
1 exponent dup ifZero: [ return ]
while ( dup 0 > ) [
dup isEven ifFalse: [ swap base * modulus mod swap ]
2 / base sq modulus mod ->base
] drop ;