From 0fa3d7fe5a27b87bcffb89fb30ffd294a0c2c40a Mon Sep 17 00:00:00 2001 From: Federico I Date: Sun, 29 Mar 2020 21:14:32 +0100 Subject: [rust] Armstrong Numbers --- armstrong-numbers/src/lib.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 armstrong-numbers/src/lib.rs (limited to 'armstrong-numbers/src/lib.rs') diff --git a/armstrong-numbers/src/lib.rs b/armstrong-numbers/src/lib.rs new file mode 100644 index 0000000..41b0824 --- /dev/null +++ b/armstrong-numbers/src/lib.rs @@ -0,0 +1,15 @@ + +fn digits(mut n: u32) -> (usize,Vec) { + 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::() == num +} -- cgit v1.2.3