aboutsummaryrefslogtreecommitdiff
path: root/armstrong-numbers/src
diff options
context:
space:
mode:
Diffstat (limited to 'armstrong-numbers/src')
-rw-r--r--armstrong-numbers/src/lib.rs15
1 files changed, 15 insertions, 0 deletions
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 @@
1
2fn digits(mut n: u32) -> (usize,Vec<u32>) {
3 let mut v = vec![];
4 while n > 9 {
5 v.push(n % 10);
6 n /= 10;
7 }
8 v.push(n);
9 (v.len(),v)
10}
11
12pub fn is_armstrong_number(num: u32) -> bool {
13 let (l,v) = digits(num);
14 v.iter().map(|x| x.pow(l as u32)).sum::<u32>() == num
15}