1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
use super::gcd::gcd;
pub fn multi_lcm(nums: &[u32]) -> u32 {
let multi = nums.iter().fold(1_u32, |prev, t| {
let d = gcd(prev, *t);
prev * *t / d
});
multi
}
#[cfg(test)]
mod tests {
use super::multi_lcm;
#[test]
fn lcm_test() {
let input = [2_u32, 4_u32, 6_u32, 8_u32];
let result = multi_lcm(&input);
assert_eq!(result, 24);
let input = [32_u32, 4_u32, 6_u32, 8_u32];
let result = multi_lcm(&input);
assert_eq!(result, 96);
}
}