LoginSignup
7
3

More than 3 years have passed since last update.

Ruby で任意個の整数の最大公約数・最小公倍数を求める

Posted at

Ruby で整数 ab の最大公約数,最小公倍数を得るには,それぞれ Integer#gcdInteger#lcm を用いて

# 最大公約数(GCD: Greatest Common Divisor)
a.gcd(b)

# 最小公倍数(LCM: Least Common Multiplier)
a.lcm(b)

のようにする。

たとえば,4 と 6 の最大公約数,最小公倍数は

puts 4.gcd(6) # => 2
puts 4.lcm(6) # => 12

といった具合。

では三つの整数 abc の最大公約数,最小公倍数は?
$a$,$b$,$c$ の最大公約数は,「$a$ と $b$ の最大公約数」と $c$ の最大公約数なので,

a.gcd(b).gcd(c)

で得られる。
最小公倍数も同様で,

a.lcm(b).lcm(c)

で得られる。

では,整数の組が配列で与えられていたら?
以下のように書けばよい。

numbers = [30, 20, 15]

# 最大公約数
puts numbers.inject(:gcd) # => 5

# 最小公倍数
puts numbers.inject(:lcm) # => 60

Enumerable#inject にはブロックを与えずにシンボルを与える用法があったよね。

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3