Ruby on rails 在RubyonRails中查找60除数的最简单方法

Ruby on rails 在RubyonRails中查找60除数的最简单方法,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,除了硬编码或使用数学模块之外,我是否有办法在RubyonRails中找到60的除数。有我可以使用的帮助器方法/正则表达式吗?谢谢你的帮助 这将为您提供除数数组 (1..60).select { |n| 60 % n == 0} => [1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60] 这将为您提供除数数组 (1..60).select { |n| 60 % n == 0} => [1, 2, 3, 4, 5, 6, 10, 12, 15, 20,

除了硬编码或使用数学模块之外,我是否有办法在RubyonRails中找到60的除数。有我可以使用的帮助器方法/正则表达式吗?谢谢你的帮助

这将为您提供除数数组

(1..60).select { |n| 60 % n == 0}
=> [1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60]

这将为您提供除数数组

(1..60).select { |n| 60 % n == 0}
=> [1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60]

实现这一点的最简单方法之一是创建一个介于1和60之间的数字列表,然后只选择除60而不带余数的数字

要扩展SteveTurczyn的答案,我们可以:

(1..60).select { |n| 60 % n == 0 }

1..60部分创建了一个枚举数,在本例中,我们可以将其视为1到60之间的数字数组

然后,您要获取该数组,并仅选择60的除数元素

我们可以使用模运算符%,当我们将一个数除以另一个数时,它会给出余数,例如,5%2返回1。当然,如果没有余数,那么我们知道这个数被完全除掉,因此是这个数的除数,也就是说,如果a%b==0,那么b是a的除数

所以我们要做的是,使用上面的作为从1到60之间的数字数组中选择元素的标准,我们可以用这个方法来做

如果我们有一些东西,比如数组,我认为,一个,我们可以使用select和一个block,只提取满足我们在block中指定的任何条件的元素


{n | 60%n==0}是我们传递给select的块,当60%n为0时,它将返回true,每个n是数字1到60数组中的一个元素。Arrayselect只返回数组中块计算为true的元素,这就是SteveTurczyn的解决方案的工作原理。

实现这一点的最简单方法之一是创建一个介于1和60之间的数字列表,然后只选择除60而不带余数的数字

要扩展SteveTurczyn的答案,我们可以:

(1..60).select { |n| 60 % n == 0 }

1..60部分创建了一个枚举数,在本例中,我们可以将其视为1到60之间的数字数组

然后,您要获取该数组,并仅选择60的除数元素

我们可以使用模运算符%,当我们将一个数除以另一个数时,它会给出余数,例如,5%2返回1。当然,如果没有余数,那么我们知道这个数被完全除掉,因此是这个数的除数,也就是说,如果a%b==0,那么b是a的除数

所以我们要做的是,使用上面的作为从1到60之间的数字数组中选择元素的标准,我们可以用这个方法来做

如果我们有一些东西,比如数组,我认为,一个,我们可以使用select和一个block,只提取满足我们在block中指定的任何条件的元素


{n | 60%n==0}是我们传递给select的块,当60%n为0时,它将返回true,每个n是数字1到60数组中的一个元素。Arrayselect只返回数组中块计算为true的元素,这就是SteveTurczyn的解决方案的工作方式。

可能需要更多的上下文。我需要在下拉列表中显示60的除数。可能需要更多的上下文。我需要在下拉列表中显示60的除数。您可以将比较数减少一半,因为没有大于60的数字60的一半可以是除60本身之外的它的除数。1..60部分创建一个枚举数。几乎实际上,一个包含可枚举数的范围。@Pavling更是如此,每个发现的除数实际上发现了两个,如果你也得到了商的话。这使得仅对sqrtn进行包含式迭代成为可能。不过,算法变得不那么简洁了。谢谢你的澄清。我今天也学到了一些东西您可以将比较次数减半,因为除了60本身之外,任何大于60的一半的数字都不能是它的除数。1..60部分创建一个枚举数。几乎实际上,一个包含可枚举数的范围。@Pavling更是如此,每个发现的除数实际上发现了两个,如果你也得到了商的话。这使得仅对sqrtn进行包含式迭代成为可能。不过,算法变得不那么简洁了。谢谢你的澄清。我今天也学到了一些东西