1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
pub fn sqrt(y: u128) -> u128 { if y > 3u128 { let mut z = y; let mut x: u128 = y / 2 + 1; while x < z { z = x; x = (y / x + x) / 2; } z } else if y != 0 { let z = 1; z } else { y } } pub fn min(x: u128, y: u128) -> u128 { let z = match x < y { true => x, _ => y, }; z } #[cfg(test)] mod tests { use super::*; #[test] fn sqrt_works() { assert_eq!(2, sqrt(4)); } #[test] fn min_works() { assert_eq!(1, min(1, 3)); } }