summary refs log tree commit diff stats
path: root/rust/armstrong-numbers/src/lib.rs
blob: 442760ceca8b0e855a334ab5b52a11dfd6f72a65 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
pub fn is_armstrong_number(num: u32) -> bool {
    if num == 0 {
        return true;
    }

    let len = (num as f32).log10() as u32 + 1;

    let mut arms = 0;
    let mut tmp = num;
    while tmp != 0 {
        let rem = tmp % 10;
        arms += rem.pow(len);
        tmp /= 10
    }

    arms == num
}