|
|
@@ -0,0 +1,107 @@ |
|
1 |
+ |
KNOWN_ARMSTRONG = [ |
|
2 |
+ |
1, |
|
3 |
+ |
2, |
|
4 |
+ |
3, |
|
5 |
+ |
4, |
|
6 |
+ |
5, |
|
7 |
+ |
6, |
|
8 |
+ |
7, |
|
9 |
+ |
8, |
|
10 |
+ |
9, |
|
11 |
+ |
153, |
|
12 |
+ |
370, |
|
13 |
+ |
371, |
|
14 |
+ |
407, |
|
15 |
+ |
1634, |
|
16 |
+ |
8208, |
|
17 |
+ |
9474, |
|
18 |
+ |
54748, |
|
19 |
+ |
92727, |
|
20 |
+ |
93084, |
|
21 |
+ |
548834, |
|
22 |
+ |
1741725, |
|
23 |
+ |
4210818, |
|
24 |
+ |
9800817, |
|
25 |
+ |
9926315, |
|
26 |
+ |
24678050, |
|
27 |
+ |
24678051, |
|
28 |
+ |
88593477, |
|
29 |
+ |
146511208, |
|
30 |
+ |
472335975, |
|
31 |
+ |
534494836, |
|
32 |
+ |
912985153, |
|
33 |
+ |
4679307774, |
|
34 |
+ |
32164049650, |
|
35 |
+ |
32164049651, |
|
36 |
+ |
40028394225, |
|
37 |
+ |
42678290603, |
|
38 |
+ |
44708635679, |
|
39 |
+ |
49388550606, |
|
40 |
+ |
82693916578, |
|
41 |
+ |
94204591914, |
|
42 |
+ |
28116440335967, |
|
43 |
+ |
4338281769391370, |
|
44 |
+ |
4338281769391371, |
|
45 |
+ |
21897142587612075, |
|
46 |
+ |
35641594208964132, |
|
47 |
+ |
35875699062250035, |
|
48 |
+ |
1517841543307505039, |
|
49 |
+ |
3289582984443187032, |
|
50 |
+ |
4498128791164624869, |
|
51 |
+ |
4929273885928088826, |
|
52 |
+ |
63105425988599693916, |
|
53 |
+ |
128468643043731391252, |
|
54 |
+ |
449177399146038697307, |
|
55 |
+ |
21887696841122916288858, |
|
56 |
+ |
27879694893054074471405, |
|
57 |
+ |
27907865009977052567814, |
|
58 |
+ |
28361281321319229463398, |
|
59 |
+ |
35452590104031691935943, |
|
60 |
+ |
174088005938065293023722, |
|
61 |
+ |
188451485447897896036875, |
|
62 |
+ |
239313664430041569350093, |
|
63 |
+ |
1550475334214501539088894, |
|
64 |
+ |
1553242162893771850669378, |
|
65 |
+ |
3706907995955475988644380, |
|
66 |
+ |
3706907995955475988644381, |
|
67 |
+ |
4422095118095899619457938, |
|
68 |
+ |
121204998563613372405438066, |
|
69 |
+ |
121270696006801314328439376, |
|
70 |
+ |
128851796696487777842012787, |
|
71 |
+ |
174650464499531377631639254, |
|
72 |
+ |
177265453171792792366489765, |
|
73 |
+ |
14607640612971980372614873089, |
|
74 |
+ |
19008174136254279995012734740, |
|
75 |
+ |
19008174136254279995012734741, |
|
76 |
+ |
23866716435523975980390369295, |
|
77 |
+ |
1145037275765491025924292050346, |
|
78 |
+ |
1927890457142960697580636236639, |
|
79 |
+ |
2309092682616190307509695338915, |
|
80 |
+ |
17333509997782249308725103962772, |
|
81 |
+ |
186709961001538790100634132976990, |
|
82 |
+ |
186709961001538790100634132976991, |
|
83 |
+ |
1122763285329372541592822900204593, |
|
84 |
+ |
12639369517103790328947807201478392, |
|
85 |
+ |
12679937780272278566303885594196922, |
|
86 |
+ |
1219167219625434121569735803609966019, |
|
87 |
+ |
12815792078366059955099770545296129367, |
|
88 |
+ |
115132219018763992565095597973971522400, |
|
89 |
+ |
115132219018763992565095597973971522401 |
|
90 |
+ |
] |
|
91 |
+ |
|
|
92 |
+ |
class Integer |
|
93 |
+ |
def is_armstrong? |
|
94 |
+ |
digits = self.to_s.chars.map(&:to_i) |
|
95 |
+ |
self == digits.map{_1**digits.count}.inject(&:+) |
|
96 |
+ |
end |
|
97 |
+ |
end |
|
98 |
+ |
|
|
99 |
+ |
def test |
|
100 |
+ |
numbers = KNOWN_ARMSTRONG |
|
101 |
+ |
KNOWN_ARMSTRONG.count.times{numbers << rand(KNOWN_ARMSTRONG.last)} |
|
102 |
+ |
numbers.sort.each do |x| |
|
103 |
+ |
puts "#{x} is #{'not ' unless x.is_armstrong?}an Armstrong number" |
|
104 |
+ |
end |
|
105 |
+ |
end |
|
106 |
+ |
|
|
107 |
+ |
test |