【Python】math.gcd()で最大公約数を求める!
Pythonのmath.gcd()を使用すると、最大公約数を求めることができます。
math.gcd()とは指定したパラメータの最大公約数を返す関数であり、指定した数値の最大公約数を求めることができます。
しかし、指定できるパラメータはPythonのバージョンによって異なりますので注意してください。
また、math.gcd()だけでなく、numpy.gcd()でも最大公約数を求めることができ、reduce()と組み合わせて使用するとリスト内の要素の最大公約数を求めることができますのでたくさんの数値の中から最大公約数を求めたい場合に便利です。
今回はPythonのmath.gcd()で最大公約数を求める方法について以下の内容で解説していきます。
⚫︎ Python3.8以降のmath.gcd()を使用する場合
⚫︎ Python3.9.1のmath.gcd()を使用する場合
⚫︎ numpy.gcd()で最大公約数を求める方法
⚫︎ Python3.8以降で3つ以上の数値の最大公約数を求める方法
⚫︎ 最小公倍数を求める方法
目次
math.gcd()とは
math.gcd()とは、最大公約数を返す関数であり、
math.gcd()の書き方
math.gcd()の書き方は下記となります。
Pythonのバージョンによって書き方が異なります。
Python3.8以降の場合
1 2 3 |
import math math.gcd('数字', '数字') |
Python3.9.1の場合
1 2 3 |
import math math.gcd('数字', '数字' [, '数字', ...]) |
Python3.8以降の場合はパラメータは2つまで指定できますが、Python3.9.1の場合はパラメータを2つ以上から指定することができます。
math.gcd()のパラメータ
⚫︎ 数字:
最大公約数を求めたい数字を整数型で指定する
math.gcd()のパラメータに数字を指定することで指定した数字の最大公約数を返します。
最大公約数を求めるサンプルコード
最大公約数を求めるサンプルコードを紹介します。
Python3.8以降のmath.gcd()を使用する場合
Python3.8以降のmath.gcd()を使用して、最大公約数を求めてみます。
例
1 2 3 4 5 |
import math print(30, 50) print('・math.gcd()で最大公約数を求める') print('最大公約数', math.gcd(30, 50)) |
出力結果
30 50
・math.gcd()で最大公約数を求める
最大公約数 10
math.gcd()によって指定した数字の最大公約数を求めています。
また、Pythonが3.8以降になるのでmath.gcd()のパラメータを2つ指定しています。
Python3.9.1のmath.gcd()を使用する場合
Python3.9.1のmath.gcd()を使用して最大公約数を求めてみます。
例
1 2 3 4 5 6 7 8 9 |
import math print(30, 50, 100) print('・math.gcd()で最大公約数を求める') print('最大公約数', math.gcd(30, 50, 100)) print(150, 175, 200, 2500) print('・math.gcd()で最大公約数を求める') print('最大公約数', math.gcd(150, 175, 200, 2500)) |
出力結果
30, 50, 100
・math.gcd()で最大公約数を求める
最大公約数 10
150 175 200 2500
・math.gcd()で最大公約数を求める
最大公約数 25
math.gcd()によって指定した数字の最大公約数を求めています。
また、Pythonが3.9.1になるのでmath.gcd()のパラメータを2つ以上指定しています。
numpy.gcd()で最大公約数を求める方法
また、math.gcd()だけでなく、numpy.gcd()でも最大公約数を求めることができます。
例
1 2 3 4 5 |
import numpy print(200, 300) print('・numpy.gcd()で最大公約数を求める') print(numpy.gcd(200, 300)) |
出力結果
200 300
・numpy.gcd()で最大公約数を求める
100
numpy.gcd()によって、よって指定した数字の最大公約数を求めています。
Python3.8以降で3つ以上の数値の最大公約数を求める方法
Python3.8以降のmath.gcd()ではパラメータを2つまでしか指定できませんでしたが、reduce()と組み合わせて使用すると3つ以上の数値の最大公約数を求めることができます。
reduce()とは高階関数と呼ばれ、引数に指定したリストの各要素に次々と指定した関数を適用する関数となります。
例
1 2 3 4 5 6 7 8 |
import functools import math sample_list = [200, 500, 250, 150, 400, 800] print(sample_list) print('・reduce()でリスト内の最大公約数を求める') list_gcd = functools.reduce(math.gcd, sample_list) print('最大公約数は', list_gcd) |
出力結果
[200, 500, 250, 150, 400, 800]
・reduce()でリスト内の最大公約数を求める
最大公約数は 50
reduce()によってリスト内の要素の最大公約数を返しています。
つまり、最大公約数を求めたい数値をリスト化し、reduce()と組み合わせて使用することで、Python3.8以降でも3つ以上の数値の最大公約数を求めることができます。
最小公倍数を求める方法
最小公倍数を求めるには、math.lcm()を使用します。
しかし、math.lcm()はPython3.9.1からでないと使用することができません。
例
1 2 3 4 5 |
import math print(30, 50, 60) print('・math.gcd()で最小公倍数を求める') print('最小公倍数は', math.lcm(30, 50, 60)) |
出力結果
30, 50, 60
・math.lcm()で最小公倍数を求める
最小公倍数は 900
math.lcm()によって最小公倍数を返しています。
今回のポイント
math.gcd()で最大公約数を求める
Pythonで最大公約数を求めるにはmath.gcd()を使用する。
⚫︎ math.gcd()はPythonのバージョンによって指定できるパラメータが異なる
(Python3.8以上は2つまでで、Python3.9.1からは2つ以上指定できる)
⚫︎ numpy.gcd()でも最大公約数を求めることができる
⚫︎ reduce()を使用すると、リストの要素内の最大公約数を求めることができる
(Python3.8以降でも3つ以上の数値の最大公約数を求めることが可能)
⚫︎ Pythonで最小数を求めるにはmath.lcm()を使用する
(Python3.9.1からでないと使用することができない)
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。