programming-rust-book/gcd/src/lib.rs

33 lines
496 B
Rust

pub fn gcd(mut n: u64, mut m: u64) -> u64 {
assert!(n != 0 && m != 0);
while m != 0 {
if m < n {
let t = m;
m = n;
n = t;
}
m = m % n;
}
n
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_gcd() {
assert_eq!(gcd(14, 15), 1);
assert_eq!(
gcd(
2 * 3 * 5 * 11 * 17,
3 * 7 * 11 * 13 * 19
),
3 * 11
)
}
}