1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
fn factors_aux(mut vec: Vec<u64>, n: u64) -> Vec<u64> { match n { 1 => vec, n if n % 2 == 0 => { factors_aux({ vec.push(2); vec }, n / 2) }, _ => { let mut i: u64 = 3; while n % i != 0 { i += 2 } factors_aux({ vec.push(i); vec }, n / i) } } } pub fn factors(n: u64) -> Vec<u64> { factors_aux(vec![],n) }