23 lines
603 B
Ruby
23 lines
603 B
Ruby
def humble?(i)
|
|
while i % 2 == 0; i /= 2 end
|
|
while i % 3 == 0; i /= 3 end
|
|
while i % 5 == 0; i /= 5 end
|
|
while i % 7 == 0; i /= 7 end
|
|
i == 1
|
|
end
|
|
|
|
count, num = 0, 0
|
|
digits = 10 # max digits for humble numbers
|
|
limit = 10 ** digits # max numbers to search through
|
|
humble = Array.new(digits + 1, 0)
|
|
|
|
while (num += 1) < limit
|
|
if humble?(num)
|
|
humble[num.to_s.size] += 1
|
|
print num, " " if count < 50
|
|
count += 1
|
|
end
|
|
end
|
|
|
|
print "\n\nOf the first #{count} humble numbers:\n"
|
|
(1..digits).each { |num| printf("%5d have %2d digits\n", humble[num], num) }
|