A continuació es mostra una descripció de com calcular i obtenir el màxim comú divisor i el mínim comú múltiple en Python.
- Màxim comú divisor i mínim comú múltiple de dos nombres enters
- El màxim comú divisor i el mínim comú múltiple de tres o més nombres enters
Tingueu en compte que les especificacions de les funcions proporcionades a la biblioteca estàndard difereixen segons la versió de Python. En aquest article també es mostra un exemple d’implementació d’una funció que no es troba a la biblioteca estàndard.
- Python 3.4 o anterior
- GCD:
fractions.gcd()
(només dos arguments)
- GCD:
- Python 3.5 o posterior
- GCD:
math.gcd()
(només dos arguments)
- GCD:
- Python 3.9 o posterior
- GCD:
math.gcd()
(admet més de tres arguments) - mínim comú denominador:
math.lcm()
(admet més de tres arguments)
- GCD:
Aquí expliquem el mètode utilitzant la biblioteca estàndard de Python; NumPy es pot utilitzar fàcilment per calcular el màxim comú divisor i el mínim comú múltiple per a cada element de múltiples matrius.
Màxim comú divisor i mínim comú múltiple de dos nombres enters
GCD
Des de Python 3.5, hi ha una funció gcd() al mòdul de matemàtiques. gcd() és un acrònim de
- greatest common divisor
Retorna el màxim comú divisor de l’enter especificat a l’argument.
import math
print(math.gcd(6, 4))
# 2
Tingueu en compte que a Python 3.4 i anteriors, la funció gcd() es troba al mòdul de fraccions, no al mòdul matemàtic. les fraccions s’han d’importar i fractions.gcd().
mínim comú denominador
La funció lcm(), que retorna el mínim comú múltiple, es va afegir al mòdul matemàtic de Python 3.9. lcm és un acrònim de
- least common multiple
Retorna el mínim comú múltiple de l’enter especificat a l’argument.
print(math.lcm(6, 4))
# 12
Abans de Python 3.8, lcm() no es proporciona, però es pot calcular fàcilment mitjançant gcd().
lcm(a, b) = a * b / gcd(a, b)
Exemple d’implementació.
def my_lcm(x, y):
return (x * y) // math.gcd(x, y)
print(my_lcm(6, 4))
# 12
/
Com que això dóna com a resultat un decimal flotant, s’utilitzen dues barres invertides per truncar el punt decimal i retornar un resultat de divisió enter. Tingueu en compte que no es fa cap processament per determinar si l’argument és un nombre enter o no.
El màxim comú divisor i el mínim comú múltiple de tres o més nombres enters
Python 3.9 o posterior
A partir de Python 3.9, totes les funcions següents admeten més de tres arguments.
math.gcd()
math.lcm()
print(math.gcd(27, 18, 9))
# 9
print(math.gcd(27, 18, 9, 3))
# 3
print(math.lcm(27, 9, 3))
# 27
print(math.lcm(27, 18, 9, 3))
# 54
*
Si voleu calcular el màxim comú divisor o el mínim comú múltiple dels elements d’una llista, especifiqueu l’argument amb això.
l = [27, 18, 9, 3]
print(math.gcd(*l))
# 3
print(math.lcm(*l))
# 54
Python 3.8 o anterior
Abans de Python 3.8, la funció gcd() només suportava dos arguments.
Per trobar el màxim comú divisor o el mínim comú múltiple de tres o més nombres enters, no es requereix cap algorisme especialment complicat; només cal calcular el màxim comú divisor o el mínim comú múltiple per a cadascun dels múltiples valors al seu torn mitjançant la funció d’ordre superior reduce().
GCD
from functools import reduce
def my_gcd(*numbers):
return reduce(math.gcd, numbers)
print(my_gcd(27, 18, 9))
# 9
print(my_gcd(27, 18, 9, 3))
# 3
l = [27, 18, 9, 3]
print(my_gcd(*l))
# 3
De nou, tingueu en compte que abans de Python 3.4, la funció gcd() es troba al mòdul de fraccions, no al mòdul matemàtic.
mínim comú denominador
def my_lcm_base(x, y):
return (x * y) // math.gcd(x, y)
def my_lcm(*numbers):
return reduce(my_lcm_base, numbers, 1)
print(my_lcm(27, 9, 3))
# 27
print(my_lcm(27, 18, 9, 3))
# 54
l = [27, 18, 9, 3]
print(my_lcm(*l))
# 54