gcd

Computes the greatest common divisor of a and b by using an efficient algorithm such as Euclid's or Stein's algorithm.

  1. typeof(Unqual!(T).init % Unqual!(U).init) gcd(T a, U b)
  2. auto gcd(T a, T b)
    gcd
    (
    T
    )
    (
    T a
    ,
    T b
    )
    if (
    !isIntegral!T &&
    is(typeof(T.init % T.init))
    &&
    is(typeof(
    T.init == 0 ||
    T.init > 0
    ))
    )

Parameters

a T

Integer value of any numerical type that supports the modulo operator %. If bit-shifting << and >> are also supported, Stein's algorithm will be used; otherwise, Euclid's algorithm is used as a fallback.

b T

Integer value of any equivalent numerical type.

Return Value

Type: auto

The greatest common divisor of the given arguments.

Examples

assert(gcd(2 * 5 * 7 * 7, 5 * 7 * 11) == 5 * 7);
const int a = 5 * 13 * 23 * 23, b = 13 * 59;
assert(gcd(a, b) == 13);

Meta