我创建了以下内容,这很有效,但看起来很神秘。有没有办法以更 Ruby 风格或易于理解的方式编写它?
此方法会删除数字以下的较低因子。所以,10.high_factors
返回[6,7,8,9,10]
。6 可以被 2 整除,所以 2 被删除。列表中没有大于 6 的倍数,因此保留。
class Fixnum
def high_factors
# Get the numbers that are not divisible by lower ones below self
list = (2..self).to_a
2.upto(self).each do |i|
((i+1)..self).each { |j| list.delete i if j.is_divisible_by? i }
end
list
end
def is_divisible_by? divisor
self % divisor == 0
end
end
红宝石 1.9.3