# Trait typenum::type_operators::Gcd

``````pub trait Gcd<Rhs> {
type Output;
}``````
Expand description

A type operator that computes the greatest common divisor of `Self` and `Rhs`.

## Example

``````use typenum::{Gcd, Unsigned, U12, U8};

assert_eq!(<U12 as Gcd<U8>>::Output::to_i32(), 4);``````

## Required Associated Types§

source

#### type Output

The greatest common divisor.

## Implementors§

source§

§

source§

gcd(0, 0) = 0

§

source§

§

source§

§

source§

§

source§

§

source§

§

source§

§

source§

§

source§

§

source§

gcd(x, 0) = x

§

source§

### impl<Xp, Yp> Gcd<UInt<Yp, B0>> for UInt<Xp, B0>where Xp: Gcd<Yp>, UInt<Xp, B0>: NonZero, UInt<Yp, B0>: NonZero,

gcd(x, y) = 2*gcd(x/2, y/2) if both x and y even

§

source§

### impl<Xp, Yp> Gcd<UInt<Yp, B0>> for UInt<Xp, B1>where UInt<Xp, B1>: Gcd<Yp>, UInt<Yp, B0>: NonZero,

gcd(x, y) = gcd(x, y/2) if x odd and y even

§

source§

### impl<Xp, Yp> Gcd<UInt<Yp, B1>> for UInt<Xp, B0>where Xp: Gcd<UInt<Yp, B1>>, UInt<Xp, B0>: NonZero,

gcd(x, y) = gcd(x/2, y) if x even and y odd

§

source§

### impl<Xp, Yp> Gcd<UInt<Yp, B1>> for UInt<Xp, B1>where UInt<Xp, B1>: Max<UInt<Yp, B1>> + Min<UInt<Yp, B1>>, UInt<Yp, B1>: Max<UInt<Xp, B1>> + Min<UInt<Xp, B1>>, Maximum<UInt<Xp, B1>, UInt<Yp, B1>>: Sub<Minimum<UInt<Xp, B1>, UInt<Yp, B1>>>, Diff<Maximum<UInt<Xp, B1>, UInt<Yp, B1>>, Minimum<UInt<Xp, B1>, UInt<Yp, B1>>>: Gcd<Minimum<UInt<Xp, B1>, UInt<Yp, B1>>>,

gcd(x, y) = gcd([max(x, y) - min(x, y)], min(x, y)) if both x and y odd

This will immediately invoke the case for x even and y odd because the difference of two odd numbers is an even number.

§

source§

gcd(0, y) = y

§