2024-10-05 18:40:45 +02:00
|
|
|
let rec pow a = function
|
|
|
|
|
| 0 -> 1
|
|
|
|
|
| 1 -> a
|
|
|
|
|
| n ->
|
|
|
|
|
let b = pow a (n / 2) in
|
|
|
|
|
b * b * (if n mod 2 = 0 then 1 else a)
|
2024-10-07 14:13:28 +02:00
|
|
|
|
|
|
|
|
let rec powmod a d = function
|
|
|
|
|
| 0 -> 1
|
|
|
|
|
| 1 -> a mod d
|
|
|
|
|
| n ->
|
|
|
|
|
let b = (powmod a d (n / 2)) mod d in
|
|
|
|
|
(((b * b) mod d) * (if n mod 2 = 0 then 1 else a)) mod d
|