aboutsummaryrefslogtreecommitdiff
path: root/rust/armstrong-numbers/src/lib.rs
blob: 41b0824585b3032dfd29913f4ce7dd3d4f4c88b2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fn digits(mut n: u32) -> (usize,Vec<u32>) {
    let mut v = vec![];
    while n > 9 {
        v.push(n % 10);
        n /= 10;
    }
    v.push(n);
    (v.len(),v)
}

pub fn is_armstrong_number(num: u32) -> bool {
    let (l,v) = digits(num);
    v.iter().map(|x| x.pow(l as u32)).sum::<u32>() == num
}