1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
use crate::math::gcd; pub trait WithGcd { fn gcd(&self) -> u64; } impl WithGcd for Vec<u64> { fn gcd(&self) -> u64 { self.iter().fold(0, |acc, &c| gcd(acc, c)) } } impl WithGcd for Vec<i64> { fn gcd(&self) -> u64 { self.iter().fold(0, |acc, &c| gcd(acc, c.abs() as u64)) } }