(a: BigNum, b: BigNum)
| 2 | import { BigDecimal } from '../../big-decimal/index.js'; |
| 3 | |
| 4 | export function gcd(a: BigNum, b: BigNum): BigNum { |
| 5 | //@todo: https://github.com/Yaffle/bigint-gcd/blob/main/gcd.js |
| 6 | console.assert(a.isInteger() && b.isInteger()); |
| 7 | while (!b.isZero()) [a, b] = [b, a.mod(b)]; |
| 8 | return a.abs(); |
| 9 | } |
| 10 | |
| 11 | export function lcm(a: BigNum, b: BigNum): BigNum { |
| 12 | // `lcm(0, n) = 0`: the general formula would divide by `gcd(0, 0) = 0`. |