如何使用Ruby检查数字是否为Dudeney数字?以这些结果为例:
dudeney_number?(1) #=> true
dudeney_number?(125) #=> false
dudeney_number?(512) #=> true
dudeney_number?(1728) #=> false
dudeney_number?(5832) #=> true
答案 0 :(得分:5)
嗯,这很容易;只有6个!
def dudeney_number?(x)
return [1, 512, 4913, 5832, 17576, 19683].include?(x)
end
答案 1 :(得分:2)
来自https://en.wikipedia.org/wiki/Dudeney_number:
Dudeney数是一个正整数,是一个完美的立方体,其小数位的总和等于数字的立方根。
以下是该定义的实现:
def dudeney_number?(n)
digit_sum = n.to_s.chars.map(&:to_i).inject(:+)
n == digit_sum ** 3
end
1.upto(20000).select { |n| dudeney_number? n }
#=> [1, 512, 4913, 5832, 17576, 19683]
该方法不会检查n
是否为正整数。